正在加载视频...

视频加载失败

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 次观看 • 1 年前 •via X (Twitter)

11 条评论

Brotzky 的头像
Brotzky1 年前

that margin bottom trick is slick

jhey ▲🐻🎈 的头像
jhey ▲🐻🎈1 年前

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 的头像
Better Bedder1 年前

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

illyasreal von einzburp 的头像
illyasreal von einzburp1 年前

@rejex_visions fancy tables

Alfon 的头像
Alfon1 年前

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 的头像
(dm)ytro kondakov1 年前

margin bottom is smart

Cyrus Zei 的头像
Cyrus Zei1 年前

Never thought of that actually! Nice !! Thank you

jhey ▲🐻🎈 的头像
jhey ▲🐻🎈1 年前

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

Даниил @grawl@mastodon.social 的头像
Даниил @[email protected]1 年前

What if my rows is not fixed height

Speros Kokenes 的头像
Speros Kokenes1 年前

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 ▲🐻🎈 的头像
jhey ▲🐻🎈1 年前

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

相关视频

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 次观看 • 2 年前