#css
Tagged “css”
35 articlesThe custom checkbox stays hand-rolled until `::checkmark` actually ships
Andy Bell's new Piccalilli piece previews the ::checkmark pseudo-element and appearance: base, then quietly concedes no browser is working on it. Until that changes, the accessible checkbox is still a label wrapping a real input — not a div.
Sep 17, 2026 · Marcus OseiCSS & layoutYour icon is centered against the wrong thing
Ahmad Shadeed's new piece nails the icon-and-label bug that has been quietly wrong on every design system list for years, and the fix is one transform in the lh unit.
Sep 16, 2026 · Dex HalloranWeb platforminteractive-widget lands in WebKit: three ways to react when the keyboard opens
WebKit has implemented the interactive-widget viewport meta directive, giving pages a hand-authorable choice between resizing the visual viewport, resizing the layout viewport, or leaving both alone when a virtual keyboard appears.
Sep 12, 2026 · Iris CalderónBrowser releasesSafari Technology Preview 252 adds @supports named-feature(), unprefixed user-select and two accessible-name fixes
WebKit's 11 September preview adds a named-feature() function to @supports, exposes CSSConditionRule.supports and CSSMediaRule.matches on the CSSOM, ships the unprefixed user-select property, allows percentage values in text-decoration-inset, and cleans up two accessible-name bugs around display: contents and list markers.
Sep 12, 2026 · Yuki TanakaWeb platformDocument Picture-in-Picture is a window, not a video
A CSS-Tricks tutorial by Daniel Schwarz shows how to open a floating always-on-top window that hosts a real HTML document with the Document Picture-in-Picture API — options, events, and the CSS caveat that bites first.
Sep 10, 2026 · Dex HalloranCSS & layoutA polyfill for CSS random(), while the browsers catch up
Lee Meyer's walkthrough on CSS-Tricks builds a polyfill for the emergent CSS random() function so authors can start using it — and get fluent in its caching keywords — before every engine ships.
Sep 9, 2026 · Iris CalderónCSS & layoutAnchor positioning lets a resizing grid animate its reflow
A demo on bram.us animates an auto-fill grid's reflow on resize with CSS anchor positioning and a transition on inset. No JavaScript, no View Transitions, and interruptible.
Sep 8, 2026 · Iris CalderónCSS & layout@supports named-feature() lets you branch on behavior, not syntax
Bramus walks through @supports named-feature(), a new CSS conditional that tests capabilities the classic property, value, selector and at-rule checks were never able to see — like an implementation change, or two already-shipped features starting to cooperate.
Sep 8, 2026 · Iris CalderónCSS & layoutflex-wrap: balance ends the wrapped-flex orphan
Chrome 150 ships flex-wrap: balance, a new value that distributes wrapped flex items so a single trailing item stops landing alone on its own line. Ahmad Shadeed walks through the setup, the workarounds it retires, and a companion flex-line-count knob.
Sep 7, 2026 · Iris CalderónBrowser releasesSafari Technology Preview 251 lands @supports at-rule(), random() with caching, corner-shape and object-view-box
WebKit's 26 August preview adds an at-rule test to @supports, property-scoped caching on random(), the random-item(), ident() and inherit() functions, the corner-shape and object-view-box properties, comma-separated @container conditions, white-space-trim in the white-space shorthand, and HighlightRegistry.highlightsFromPoint().
Sep 7, 2026 · Iris CalderónCSS & layoutThe class prefix selector: .btn-* is coming to CSS Selectors 5
The CSS Working Group has resolved to add a class prefix selector, written .prefix-*, to Selectors Level 5 — one rule for every class that begins with a shared hyphenated prefix, instead of a list or an attribute-selector hack.
Aug 20, 2026 · Iris CalderónBrowser releasesSafari Technology Preview 250 lands SVG on the clipboard, text-decoration-inset, and a VoiceOver textarea fix
WebKit's 13 August preview adds five CSS lines (text-decoration-inset, white-space-trim, wrap-inside, content on ::marker, and a spaces value on ruby-overhang), Clipboard API read and write for image/svg+xml, a VoiceOver line-break repair on textarea, and a small deprecation — a dense build for hand-authored pages.
Aug 14, 2026 · Yuki TanakaCSS & layoutAnimating border-image finally works if you register the gradient stop
Preethi's new CSS-Tricks piece animates a gradient border-image by wrapping one of its stops in a typed custom property. The trick unlocks a moving decorative border in pure CSS, and hits a wall the moment your box has rounded corners.
Aug 11, 2026 · Iris CalderónCSS & layoutThe default axis-lock finally has an off switch
CSS Overflow 5 introduces scroll-axis-lock, a property that lets you disable the browser's default scroll-railing behavior on 2D scrollers. Chromium 153 is the first engine to ship it.
Aug 9, 2026 · Iris CalderónCSS & layoutStyling the dialog element: open is not the same as modal
A CSS-Tricks walkthrough by Geoff Graham lays out the styling model for HTML's dialog element — the modal-versus-non-modal split, three overlapping pseudo-classes, and where the animations plug in.
Aug 8, 2026 · Iris CalderónCSS & layout::highlight() with a text-shadow safety net
The CSS Custom Highlight API lets you paint arbitrary text ranges from JavaScript, no wrapper spans required. A text-shadow fallback keeps the effect intact when the API is not there.
Aug 6, 2026 · Iris CalderónCSS & layoutGap decorations: column-rule finally leaves multi-column
Chrome and Edge 149 ship CSS gap decorations, extending column-rule to grid and flexbox and adding row-rule for the other axis. The syntax was reworked before landing, so here is what actually changed and what to reach for first.
Aug 4, 2026 · Iris CalderónCSS & layoutThe CSS infinity keyword, and what it lets you delete
A tour through Adam Argyle's recipes for the CSS infinity keyword — pill radii, unbounded clamps, and a boolean pattern the cascade can decide on its own.
Aug 1, 2026 · Iris CalderónCSS & layoutThe lh unit sizes to the line, not the font
Ahmad Shadeed's post on ishadeed.com tours the CSS lh unit, which resolves to the element's computed line-height. Here's where sizing against that line beats sizing against font-size.
Aug 1, 2026 · Iris CalderónCSS & layoutRoute and navigation matching, proposed for CSS
Bramus Van Damme, Noam Rosenthal and David Baron are drafting a CSS spec — css-navigation-1 — that describes URL routes and per-navigation styling in stylesheets, so multi-page View Transitions can drop the pageswap/pagereveal JavaScript.
Jul 31, 2026 · Iris CalderónBrowser releasesSafari Technology Preview 249 drops attr(), if(), @function, popover=hint and Temporal in one build
WebKit's July 29 preview stacks nine CSS additions, a new HTML popover value, the dialog closedby attribute, and the JavaScript Temporal object into a single release — one of the feature-densest STP drops of the year for hand-authored HTML and CSS.
Jul 30, 2026 · Dex HalloranCSS & layoutHard color stops turn conic-gradient() into a triangle machine
Chris Coyier makes the case that conic-gradient() with two hard color stops is the fastest way to draw a triangle in CSS. The from and at keywords do most of the work.
Jul 29, 2026 · Iris CalderónBrowser releasesSafari Technology Preview 248 gives progress() a no-clamp option and forwards missing components across analogous color spaces
WebKit's Safari Technology Preview 248 lands two CSS additions worth reading — a no-clamp option on the CSS progress() function and forwarding of missing color components when interpolating between analogous color spaces — plus a pair of accessibility repairs and a small stack of quieter CSS fixes.
Jul 23, 2026 · Iris CalderónCSS & layoutOne grid, five rounds, no track matching
A rebuild of the FIFA knockout layout with CSS subgrid shows how nested rounds can share the parent grid's columns and rows, with negative line numbers doing the trimming.
Jul 19, 2026 · Iris CalderónCSS & layoutborder-shape is the property clip-path always owed you
The upcoming CSS border-shape accepts the same values as clip-path, but border, box-shadow and outline follow the shape instead of getting clipped off. It is the missing half of the CSS shapes story — Chromium-only for now.
Jul 8, 2026 · Dex HalloranCSS & layoutCSS anchor positioning: two properties do the wiring
Anchor positioning has landed in every major browser engine. Two properties, a keyword grid, and a fallback list replace the JavaScript most floating-UI widgets used to need.
Jul 7, 2026 · Iris CalderónBrowser releasesSafari Technology Preview 247 lands calc-mix() and clears a scatter of small fixes
WebKit's July 1 preview build adds CSS calc-mix() under its New Features list, plus HTML spec-alignment repairs for align="center" and rel=preload as="json", two VoiceOver-facing accessibility fixes, and a MathML change for underover layout.
Jul 2, 2026 · Yuki TanakaCSS & layoutPseudo-classes are states, not events
CSS-Tricks reframes the everyday choice between :hover, :focus-visible, :has() and the matching JavaScript event listeners. The piece also previews the proposed event-trigger syntax in the Animation Triggers spec, which would let CSS bind animations to events instead of states.
Jun 29, 2026 · Iris CalderónCSS & layoutOpposing scroll columns with one view() timeline and three keyframe sets
CSS-Tricks walks through making adjacent columns drift in opposite directions as the page scrolls, with no JavaScript. The trick is a per-item animation-timeline: view() and animation-range: entry 0% cover 100%, repeated across three keyframe sets.
Jun 25, 2026 · Iris CalderónCSS & layoutWhy setting perspective on :root won't flip your view transition
Setting perspective on html, :root, or even ::view-transition itself looks like the obvious place to enable a 3D view transition — and produces nothing. The fix is to switch from the property form to the perspective() function, applied inside the snapshot's keyframes.
Jun 24, 2026 · Iris CalderónCSS & layoutNaming many view transitions: attr() or match-element?
Two modern ways to give every card in a grid its own view-transition-name — attr() reading a data attribute, or the match-element keyword. They look interchangeable, then diverge the moment a navigation crosses documents or a pseudo-selector needs to address a specific snapshot.
Jun 24, 2026 · Iris CalderónCSS & layoutScroll-triggered animations land in CSS: `timeline-trigger` is not `animation-timeline`
Chrome 146 is the first browser to ship CSS scroll-triggered animations. The new `timeline-trigger` property fires a fixed-duration animation when a scroll threshold is crossed, and it is a close cousin of scroll-driven animations on a very different mechanism.
Jun 23, 2026 · Iris CalderónBrowser releasesSafari Technology Preview 246 widens color, images and attr()
WebKit has shipped Safari Technology Preview 246 with a batch of CSS additions — light-dark() taking image values, image(<color>), alpha(), color-mix() with more than two colors, attr() on pseudo-elements, and preview support for font-variant-emoji and word-break: auto-phrase.
Jun 23, 2026 · Yuki TanakaCSS & layoutGrid Lanes gets a Field Guide — and a fourth layout primitive to argue about
WebKit has published gridlanes.webkit.org, a Field Guide for the new display: grid-lanes layout primitive, with a playground, a cheat sheet and six demos pitting Grid Lanes against Flexbox, Multicolumn and Grid.
Jun 22, 2026 · Iris CalderónBrowser releasesSafari 27 beta opens up the form control, scroll, and the cascade
WebKit has detailed the Safari 27 beta: 58 new web-platform features and 525 fixes, including customizable <select>, scroll anchoring, the :heading pseudo-class, and the revert-rule and stretch CSS keywords.
Jun 19, 2026 · Yuki Tanaka