Interop 2026 is formally a factor. So, you understand all of these wild, new CSS options we’re at all times poking at however at all times placing beneath a “lack of browser help” caveat? The Huge Three — Blink (Chrome/Edge), WebKit (Safari), and Mozilla (Firefox) — are working collectively to carry full and constant help to them!
You’ll be able to learn the weblog posts your self:
An, sure, there’s lots to get enthusiastic about particularly for CSS:
Anchor positioning
From our information:
CSS Anchor Positioning offers us a easy interface to connect parts subsequent to others simply by saying which sides to attach — straight in CSS. It additionally lets us set a fallback place in order that we are able to keep away from the overflow points we simply described.
Superior attr()
We’ve truly had the attr() perform for one thing like 15 years. However now we’re gonna have the ability to cross variables in there… with kind conversion!
Container type queries
We will already question containers by “kind” however solely by measurement. It’ll be a lot cooler after we can apply kinds based mostly on different kinds. Say:
@container type((font-style: italic) and (--color-mode: mild)) {
em, i, q {
background: lightpink;
}
}
The contrast-color() perform
Getting the proper colour distinction between foreground textual content and background might be straightforward sufficient, however it’s been extra of a handbook kind factor that we’d change with a media question based mostly on the present colour scheme. With contrast-color() (I at all times wish to write that as color-contrast(), perhaps as a result of that was the unique title) we are able to dynamically toggle the colour between white and black.
button {
--background-color: darkblue;
background-color: var(--background-color);
colour: contrast-color(var(--background-color));
}
Customized Highlights
Spotlight all of the issues! We’ve had ::choice ceaselessly, however now we’ll have a bunch of others:
| Pseudo-selector | Selects… | Notes |
|---|---|---|
::search-text |
Discover-in-page matches | ::search-text:presentselects the present goal |
::target-text |
Textual content fragments | Textual content fragments permit for programmatic highlighting utilizing URL parameters. When you’re referred to an internet site by a search engine, it’d use textual content fragments, which is why ::target-text is well confused with ::search-text. |
::choice |
Textual content highlighted utilizing the pointer | |
::spotlight() |
Customized highlights as outlined by JavaScript’s Customized Spotlight API | |
::spelling-error |
Incorrectly spelled phrases | Just about applies to editable content material solely |
::grammar-error |
Incorrect grammar | Just about applies to editable content material solely |
Dialogs and popovers
Lastly, a JavaScript-less (and declarative) option to set parts on the highest layer! We’ve actually dug into these through the years.
Article
on
Oct 23, 2024
Clarifying the Relationship Between Popovers and Dialogs
Article
on
Jun 26, 2024
Poppin’ In
Article
on
Jan 26, 2026
There’s No Must Entice Deal with a Dialog Ingredient
Article
on
Jul 25, 2024
Pop(over) the Balloons
Article
on
Feb 19, 2025
Working With A number of CSS Anchors and Popovers Contained in the WordPress Loop
Article
on
Jun 9, 2025
Creating an Auto-Closing Notification With an HTML Popover
Article
on
Jul 23, 2025
A First Take a look at the Curiosity Invoker API (for Hover-Triggered Popovers)
Article
on
Jun 3, 2025
Getting Inventive With HTML Dialog
Hyperlink
on
Jan 15, 2018
Meet the New Dialog Ingredient
Hyperlink
on
Dec 1, 2025
Forestall a web page from scrolling whereas a dialog is open
Article
on
Nov 20, 2024
Invoker Instructions: Further Methods to Work With Dialog, Popover… and Extra?
Article
on
Oct 7, 2019
Some Palms-On with the HTML Dialog Ingredient
Media pseudo-classes
How typically have you ever wished to type an or component based mostly on its state? Maybe with, JavaScript, proper? We’ll have a number of states in CSS to work off:
:taking part in:paused:looking for:buffering:stalled:muted:volume-locked
I like this instance from the WebKit announcement:
video:buffering::after {
content material: "Loading...";
}
Scroll-driven animations
OK, all of us need this one. We’re speaking particularly about animation that responds to scrolling. In different phrases, there’s a direct hyperlink between scrolling progress and the animation’s progress.
#progress {
animation: grow-progress linear forwards;
animation-timeline: scroll();
}
Scroll snapping
Nothing new right here, however bringing everybody consistent with how the specs have modified through the years!
Almanac
on
Feb 13, 2019
scroll-margin
Almanac
on
Feb 12, 2019
scroll-padding
Almanac
on
Feb 21, 2019
scroll-snap-align
Almanac
on
Mar 7, 2019
scroll-snap-stop
Almanac
on
Feb 4, 2019
scroll-snap-type
Article
on
Feb 7, 2022
CSS Scroll Snap Slide Deck That Helps Dwell Coding
Article
on
Aug 5, 2022
How I Added Scroll Snapping To My Twitter Timeline
Hyperlink
on
Mar 27, 2020
Easy methods to use CSS Scroll Snap
Article
on
Mar 2, 2016
Introducing CSS Scroll Snap Factors
Article
on
Aug 15, 2018
Sensible CSS Scroll Snapping
The form() perform
That is one which Temani has been throughout recently and his SVG Path to Form Converter is a must-bookmark. The form() can draw advanced shapes when clipping parts with the clip-path property. We’ve had the flexibility to attract fundamental shapes for years — suppose circle, ellipse(), and polygon() — however no “straightforward” means to attract extra advanced shapes. And now we now have one thing much less SVG-y that accepts CSS-y models, calculations, and whatnot.
.clipped {
width: 250px;
top: 100px;
box-sizing: border-box;
background-color: blue;
clip-path: form(
from high left,
hline to 100%,
vline to 100%,
curve to 0% 100% with 50% 0%,
);
}
View transitions
There are two varieties of view transitions: same-document (transitions on the identical web page) and cross-document (or what we regularly name multi-page transitions). Similar-page transitions went Baseline in 2025 and now browsers are working to be cross-compatible implementations of cross-document transitions.
Article
on
Feb 21, 2025
Toe Dipping Into View Transitions
Article
on
Jan 29, 2025
What on Earth is the `sorts` Descriptor in View Transitions?
Almanac
on
Jun 7, 2024
::view-transition
Almanac
on
Jun 12, 2024
::view-transition-group
::view-transition-group(transition-name) { animation-duration: 1.25s; }
Almanac
on
Jun 14, 2024
::view-transition-image-new
::view-transition-image-new(*) { animation-duration: 700ms; }
Almanac
on
::view-transition-image-old
::view-transition-image-old(*) { animation-duration: 700ms; }
Almanac
on
::view-transition-image-pair
::view-transition-image-pair(root) { animation-duration: 1s; }
Almanac
on
Jan 22, 2026
::view-transition-new()
::view-transition-new(merchandise) { animation-name: fade-in; }
Almanac
on
::view-transition-old()
::view-transition-old(merchandise) { animation-name: fade-out; }
Almanac
on
Jan 22, 2025
@view-transition
Almanac
on
Jul 2, 2025
view()
Almanac
on
Jan 20, 2026
view-transition-class
Almanac
on
Could 29, 2024
view-transition-name
CSS zoom property
Oh, I wasn’t anticipating this! I imply, we’ve had zoom for years — our Almanac web page was revealed again in 2011 — however as a non-standard property. I will need to have missed that it was Baseline 2024 newly accessible and labored on as a part of Interop 2025. It’s carrying over into this 12 months.
zoom is sorta just like the scale() perform, however it truly impacts the structure whereas scale() it’s merely visible and can run over something in its means.
That’s a wrap! Bookmark the Interop 2026 Dashboard to maintain tabs on how issues are progressing alongside.
