
Layout. It’s one of those easy-to-learn, difficult-to-master things, like they say about playing bass. Not because it’s innately difficult to, say, place two elements next to each other, but because there are many, many ways to tackle it. And …
The Layout Maestro Course originally published on

I was playing around with scroll-driven animations, just searching for all sorts of random things you could do. That’s when I came up with the idea to animate main headings and, using scroll-driven animations, change the headings based on the user’s scroll position.
Scroll-Driven Sticky Heading originally published on CSS-Tricks, which is p

This is the fourth post in a series about the new CSS shape()
function. So far, we’ve covered the most common commands you will use to draw various shapes, including lines, arcs, and curves. This time, I want to introduce …
Better CSS Shapes Using shape() — Part 4: Close and Move origina

Styling the space between layout items — the gap — has typically required some clever workarounds. But a new CSS feature changes all that with just a few simple CSS properties that make it easy, yet also flexible, to display styled separators between your layout items.
The Gap Strikes Back: Now Stylable originally published on CSS-Tricks

Being the bad boy I am, I don't take Tailwind's default approach to cascade layers as the "best" one. Over a year experimenting with Tailwind and vanilla CSS, I've come across what I believe is a better solution.
Using CSS Cascade Layers With Tailwind Utilities originally published on CSS-Tricks, which is part of the

Blob, Blob, Blob. What's the most effective way to create blob shapes in CSS? Turns out, as always, there are many. Let's compare them together!
CSS Blob Recipes originally published on CSS-Tricks, which is part of the DigitalOc

KelpUI is new library that Chris Ferdinandi is developing, designed to leverage newer CSS features and Web Components. I've enjoyed following Chris as he's published an ongoing series of articles detailing his thought process behind the library, getting deep into his approach. You really get a clear picture of his strategy and I love it.
KelpUI originally published on

The CSS if()
function enables us to use values conditionally, which we can already do with queries and other functions, so I’m sure you’re wondering: What exactly does if()
do? Let's look at a possible real-world use case.
Poking at the CSS if() Function a Little More: Conditional Color Theming originally published on

The CSS if()
function was recently implemented in Chrome 137, making it the first instance where we have it supported by a mainstream browser. Let's poke at it a bit at a very high level.
Lightly Poking at the CSS if() Function in Chrome 137 originally published on CSS-Tricks, which is part of the

Zell discusses refactoring the Resize, Mutation, and Intersection Observer APIs for easier usage, demonstrating how to implement callback and event listener patterns, while highlighting available options and methods.
A Better API for the Intersection and Mutation Observers originally published on CSS-Tricks, whic