Modern CSS Tools

Developer-focused tools for modern CSS features. Container queries, :has() selector, color-mix, anchor positioning, view transitions, and more. No signup, no ads-first design, just copy the code you need.

Cubic Bezier Editor

Design smooth CSS animation curves with a visual editor.

Gradient Generator

Build linear, radial, and conic gradients with live preview.

Shadow Composer

Layer multiple box-shadows to create depth and elevation.

Clamp Calculator

Generate fluid typography and spacing with CSS clamp().

Color Mix Playground

Explore the new CSS color-mix() function across color spaces.

Grid Generator

Build CSS grid layouts with subgrid support.

Container Query Generator

Create @container rules for responsive component design.

:has() Selector Tester

Test the new parent selector with live HTML examples.

Anchor Position Playground

Experiment with CSS anchor positioning for tooltips and popovers.

View Transition Builder

Create smooth page transitions with the View Transitions API.

@property Builder

Make CSS custom properties animatable with typed @property rules.

@scope Playground

Test CSS @scope rules with upper and lower boundary scoping.

text-wrap Demo

Compare text-wrap values (balance, pretty, stable) side by side.

Border Radius Generator

Visual corner editor with advanced 8-value blob shape support.

Animation Generator

Build @keyframes animations with presets and full timing control.

The State of CSS in 2026

CSS in 2024 was a turning point. CSS in 2026 is the cleanup. Container queries hit Baseline. The :has() selector landed everywhere. color-mix() became boring. And yet — most production codebases I see still write CSS like it's 2019.

This isn't entirely the fault of the developers writing it. The CSS ecosystem moves fast, but the established patterns in design systems and component libraries lag by 2-3 years. The State of CSS 2024 survey showed adoption climbing for the new primitives, but actual usage in shipped products is a different number entirely. Below are the features I think are actually worth adopting right now, and the ones that look good in demos but aren't ready for your team's velocity yet.

Container queries are the most important addition since Flexbox

I haven't written a component-level media query in over a year. Once you internalize that components should care about their own available width and not the viewport's, going back feels like wearing a tie to a coding job. The mental model finally matches how design systems are actually built. @container (min-width: 32rem) on a card means the card just works in a sidebar, in a 3-column grid, in a hero — without any prop drilling, without any `compact` variants. The migration from media queries is a one-week project for a midsize design system if you've already adopted CSS custom properties for spacing tokens, and the resulting reduction in className noise is worth the afternoon spent doing it. Container queries hit Baseline Widely Available in 2024, which means at this point any team still writing media queries for component breakpoints is choosing to. We have a deep dive on container queries if your team is making the migration now.

:has() is powerful and overused

Hot take: most uses of :has() I see in code review should have been a state class. .form:has(input:invalid) is clever, but .form.is-invalid is two characters of JavaScript and doesn't make selector performance the next person's problem. Reach for :has() when the alternative is impossible (parent-of-direct-child styling, sibling state propagation that JS can't easily reach), or when you're working in a static context where toggling a class is genuinely awkward. The browser implementations are good now — Safari 15.4 was the laggard and that ship has long sailed — but selector specificity rules still apply, and a :has() chain three deep is still a code review red flag. We have a guide on the parent selector with the cases where it's genuinely the right tool.

color-mix() + OKLCH made design tokens viable

For years, "design tokens" in CSS meant a CSS custom property with a hex value and a Sass-era function for darken/lighten that didn't really exist. With color-mix(in oklch, var(--brand) 50%, white) you finally get a perceptually uniform mix that doesn't go muddy through gray, and you can do it at runtime, in CSS, with no preprocessor. The OKLCH learning curve is real — most designers don't think in lightness/chroma/hue and the picker UX in tools is still catching up — but the payoff is consistent contrast across an entire palette. The oklch.com playground by Andrey Sitnik is the fastest way to develop intuition. Our modern color guide covers the practical patterns.

View transitions: yes, but stop choreographing every element

The View Transitions API is great for SPAs. Most teams using it are over-engineering their choreography. A simple cross-fade — the default — covers about 80% of "make this feel native" use cases. The moment you start naming individual view-transition-name values for hero images, list items, and a header logo simultaneously, you're inventing a state machine that will break the next time someone refactors a component. Start with cross-fade. Add named transitions only where the storytelling genuinely warrants it. The MDN reference is the canonical starting point.

Anchor positioning: still not safe for production

This one will be unpopular. Anchor positioning is a great spec. It is technically Baseline. But Safari shipped support late and the fallback story for older Safari versions is thorny enough that I'm still recommending Floating UI or popover-based libraries for any project that takes browser support seriously. By 2027 this advice will probably flip. For now: be conservative, especially for anything user-facing where a misaligned tooltip ruins trust. The caniuse data tells the real story — go look at the version history before you ship.

The summary, if you want one: container queries and color-mix() are boringly safe; :has() is sharp, use sparingly; view transitions are great if you don't over-do it; anchor positioning needs another year. Most other "modern CSS" features (@scope, text-wrap: balance, scroll-driven animations) are nice-to-haves that won't change how your codebase is structured. For a broader background, the web.dev Learn CSS course remains the best free curriculum, and MDN's CSS reference remains the canonical lookup.

One more thing worth saying: the gap between what CSS can do and what most teams ship is no longer a "browser support" problem. It's a tooling-and-habits problem. The bundlers ship the new syntax, the browsers run it, the docs are good. What's missing is the willingness to retire patterns that have become muscle memory. If you take one thing from this site, let it be that. Audit one component this week — pick the one that has the most media queries — and see if container queries collapse it. The answer is almost always yes.

CSS Guides

In-depth tutorials on modern CSS features. Each guide covers fundamentals, real-world patterns, and code examples.

Container Queries Guide

Component-based responsive design with @container.

:has() Selector Guide

The parent selector CSS developers waited 20 years for.

Fluid Typography Guide

Smooth scaling with clamp() — the math and the practice.

Anchor Positioning Guide

Tooltips and popovers with pure CSS positioning.

View Transitions Guide

Cinematic page transitions for SPAs and MPAs.

Modern CSS Color Guide

oklch, color-mix(), and the new color ecosystem.

Grid & Subgrid Guide

From grid fundamentals to subgrid alignment patterns.

10 Modern CSS Features

The most impactful CSS features you should use today.

What we built and why

There are already a lot of CSS tool sites. CSS-Tricks has its long-running set of generators, css-gradient.com has been the canonical gradient picker for a decade, and Lea Verou's cubic-bezier.com is still the reference everyone copies. They're good at what they do, and we use them too. We didn't build Modern CSS Tools because those sites are bad — we built it because most of them stopped getting new tools around the time CSS Grid landed, and the ecosystem moved.

So the tools here are scoped intentionally. We deliberately don't include legacy generators — there's no Flexbox generator on this site, because Flexbox in 2026 is a syntax you write by hand or generate from your IDE, and the world doesn't need a 247th interactive Flexbox playground. We don't include color pickers either; oklch.com already exists and does it better than we would. What we focus on is the awkward middle layer: features that are new enough to need a visual explorer (container queries, color-mix across spaces, anchor positioning), and old features whose modern usage has shifted enough to warrant a fresh take (gradients, easing curves, border-radius blob shapes).

A few decisions are deliberate. Every tool's state lives in the URL, so you can paste a link into a PR or a Slack thread and everyone sees the same thing. Nothing is gated behind a signup — there is no signup, there is no account, and there will never be one. The whole site is vanilla JavaScript with no frameworks, which means it loads fast on a phone over 3G, and the source on each page is small enough to read in a single sitting if you want to know what's going on. The trade-off is that things like collaborative editing or saved presets across devices simply don't exist here. That's the point.

Last updated: April 2026 · Curated by developers, for developers.