The CSS :has() Selector Changed How I Think About Component Styling
For years, we styled child components based on parent state using JavaScript class toggling. The :has() selector flips that model — and once you see it, there's no going back.
Layout techniques, modern selectors, animations, custom properties, and practical styling patterns for production apps.
For years, we styled child components based on parent state using JavaScript class toggling. The :has() selector flips that model — and once you see it, there's no going back.
The Scroll Timeline API landed in all major browsers. Here are five patterns that replace hundreds of lines of IntersectionObserver code.
Subgrid finally solves the "nested grid alignment" problem. Here's how to use it to build a dashboard where headers, content, and sidebars line up perfectly.
We replaced 40 media query breakpoints with container queries across our design system. Components became truly portable — here's what changed.
Native CSS nesting shipped in all browsers. It's not identical to SCSS — and that's a good thing. Here's how to use it effectively without falling into the specificity trap.