Loading video...

Video Failed to Load

Go Home

the magic of CSS counters ✨ let CSS count your content outside of ordered lists using counters and optional @​counter-style reorder/edit DOM content without having to update headings, etc. the styles will update for you 👇

143,806 views • 1 year ago •via X (Twitter)

11 Comments

CG's profile picture
CG1 year ago

what program is this?

Safari Web Extensions's profile picture
Safari Web Extensions1 year ago

Discover the top Safari web extensions to boost productivity, enhance workflow, and customize your browsing experience on Mac, iOS, and iPadOS.

Arthur's profile picture
Arthur1 year ago

Saved and noted G!

Aingel ✞'s profile picture
Aingel ✞1 year ago

These are great if you’re hiding elements in a row or column. You can display a count of hidden elements without extra js loops

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

yeah, that's such a legit use case 💯

Mark Renton's profile picture
Mark Renton1 year ago

+1

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

as in, to record it?

Daniel Adeyemo's profile picture
Daniel Adeyemo1 year ago

we await The Course, sensei!

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

it's comin'! 🎈

Jude Boachie's profile picture
Jude Boachie1 year ago

I'm looking for your CSS course

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

the people have spoken – it's coming! 🎈

Related Videos

CSS Tip! 💪 You can create these tab controls with CSS :has() + radio buttons ✨ .tabs:has(input:nth-of-type(3)) { --count: 3; } .tabs:has(:checked:nth-of-type(3)) { --active: 2; } .tabs::after { translate: calc(var(--active, 0) * 100%) 0; width: calc(100% / var(--count)); } Two CSS :has() tricks here combined with a rendering trick 🤙 The tab control is a container using display: grid. You can use :has() to count the number of tabs in the container: .tabs:has(input:nth-of-type(3)) { --count: 3; } .tabs:has(input:nth-of-type(4)) { --count: 4; } Using the cascade, the last valid :has() gives you the number of tabs 🫶 Once you know the number of tabs, you know how to size the indicator: .tabs::after { content: ""; position: absolute; height: 100%; width: calc(100% / var(--count)); } It's a pseudoelement that uses --count to determine its size 📏 The next :has() trick is determining which tab is active or :checked as it's an input [type=radio] .tabs:has(:checked:nth-of-type(2)) { --active: 1; } .tabs:has(:checked:nth-of-type(3)) { --active: 2; } You can use a zero-indexed translation here. If the second input is :checked, set --active: 1, then translate the pseudoelement on the tabs to that position 👉 .tabs::after { translate: calc(var(--active, 0) * 100%) 0; } The last rendering trick is using mix-blend-mode 👀 The tabs have a black background-color, the pseudoelement is white, and the label text is white. When you use mix-blend-mode: difference on the pseudoelement it will give this effect that the text transitions from white to black sliding across 😎 .tabs::after { color: hsl(0 0% 100%); mix-blend-mode: difference; } You can totally mix up the colors here though and go with a different effect. The mechanics of how you can use CSS :has() is the main point here 🙏 As always, any questions, suggestions, etc. let me know CodePen.IO link below! 👇 (There's even a Tailwind CSS play for this one too 👀)

jhey ʕ•ᴥ•ʔ

437,300 views • 2 years ago