Loading video...

Video Failed to Load

Go Home

more CSS <table> tricks 👇 stick the first row using <thead> so you don't lose context, and give it a margin so you don't lose the last row on scroll thead { position: sticky; top: var(--header-height); margin-bottom: 1lh; /* or whatever row height */ }

122,020 views • 1 year ago •via X (Twitter)

11 Comments

Brotzky's profile picture
Brotzky1 year ago

that margin bottom trick is slick

jhey ▲🐻🎈's profile picture
jhey ▲🐻🎈1 year ago

it's a fun touch so it doesn't get trapped behind especially if you have a set line height for the tr, 1lh does it all 🙌 alternative "hack" is to absolutely position the last row with top: 100% 😈

Better Bedder's profile picture
Better Bedder1 year ago

The headband that wraps around your mattress. No need to tuck sheets under the mattress. Uses any bed sheets.

illyasreal von einzburp's profile picture
illyasreal von einzburp1 year ago

@rejex_visions fancy tables

Alfon's profile picture
Alfon1 year ago

Adding mb for the last row is genius! Incidentally, just seperate the last row into its own table maybe? HAHHAHA (what if the height is unknown)

(dm)ytro kondakov's profile picture
(dm)ytro kondakov1 year ago

margin bottom is smart

Cyrus Zei's profile picture
Cyrus Zei1 year ago

Never thought of that actually! Nice !! Thank you

jhey ▲🐻🎈's profile picture
jhey ▲🐻🎈1 year ago

jus' a little trick so that final row doesn't get lost ✨

Даниил @grawl@mastodon.social's profile picture
Даниил @[email protected]1 year ago

What if my rows is not fixed height

Speros Kokenes's profile picture
Speros Kokenes1 year ago

What do you think about using CSS grid for tables instead? I've been doing it lately for data grids because it makes all kinds of CSS stuff like sticky headers seem a lot easier to implement (don't need tricks like the extra margin for example). Then add aria labels

jhey ▲🐻🎈's profile picture
jhey ▲🐻🎈1 year ago

loses the semantics unless you add them all back the margin isn't there because it's a <table> fwiw but in any case, unless you really must, the native HTML table is strongly encouraged with the relevant role

Related Videos

CSS Tip! 🍬 You can create a CSS-only sticky CTA using position: sticky or scroll-driven animations 🤙 .cta { position: sticky; margin-top: 110vh; bottom: 2rem; /* 👈 Stick! */ } This is one way 👀 This first way relies on you setting a layout on the body and putting the CTA in a zero-space part of the layout body { display: grid; grid-template-columns: auto 0; } The children of the body are an element with your content and then the CTA. You could also use display:flex too. .content { flex: 1 0 100%; } .cta { place-self: end; } As you scroll the body, the CTA comes into view and sticks in position 🙌 That's one way. If you want to take it further and do something like flip between showing or not, maybe scale it up, or add some special easing, etc. an animation is another way 📜 First, change the styles for your CTA. Note the translate property that's powered by a custom property .cta { position: fixed; bottom: 2rem; right: 2rem; translate: 0 calc(20vh - (var(--show) * 20vh)); transition: translate 0.875s var(--elastic); } Next you need a custom property that you're going to animate @​property --show { inherits: true; initial-value: 0; syntax: ' '; } Lastly, you animate this value on the body. As the property value changes, the value will trickle down to the CTA @​supports (animation-timeline: scroll()) { body { animation: show-cta both steps(1); animation-timeline: scroll(root); animation-range: 0 10vh; } @​keyframes show-cta { to { --show: 1; } } } Using @​supports you can use this as a progressive enhancement. If scroll-driven animations are supported, use them. Otherwise fallback to using position: sticky 🤙 That's it! As always, any questions or requests, hit me up! 🙏 CodePen.IO link below! 👇

jhey ʕ•ᴥ•ʔ

133,020 views • 2 years ago