Sign up

Original Content – Bram.us

Not verified No WebSub updates No webmention support Valid

A rather geeky/technical weblog, est. 2001, by Bramus

Generator
https://wordpress.org/?v=6.9.4
Public lists
btconf 2026 speakers
Fetched

Original Content – Bram.us Valid
• Bramus!

View Transitions: Use the new attr() or match-element for the view-transition-name?

At CSS Day, “YouTube guy” Kevin Powell showed a lot of demos that relied on the advanced attr() function. In one of the examples he used attr() to set view-transition-name values — a technique I covered in my article on advanced attr() function.

But then during the Q&A, Cyd Stumpel wondered if he couldn’t just use match-element there.

The short answer to that question is yes. The longer answer is … It Depends™

Original Content – Bram.us Valid
• Bramus!

Introducing view-transitions-toolkit, a collection of utility functions to more easily work with View Transitions.

Over the past years, I’ve published a bunch of View Transitions contents: articles, talks, demos, etc. I’ve also done a bunch of more experimental things with them, such as optimizing the keyframes or driving a View Transition by scroll.

What I noticed while doing all those experiments is that I repeated a lot of the code … and they were scattered a bit all over the place as well. So I bundled that all up in a package: view-transitions-toolkit.

Original Content – Bram.us Valid
• Bramus!

CSS position: sticky now sticks to the nearest scroller on a per axis basis!

If you’ve ever tried to build a data table with a sticky header and a sticky first column, you know the pain. You’d think a simple position: sticky with top: 0 and left: 0 would be enough, but the reality was that only one of both would stick.

A recent change to CSS fixes this: position: sticky now plays nice with single-axis scrollers, allowing you to have sticky elements that track different scroll containers on different axes. This change is available in Chrome 148.

Original Content – Bram.us Valid
• Bramus!

More Easy Light-Dark Mode Switching: light-dark() is about to support images!

CSS light-dark() is being extended to support images.

Original Content – Bram.us Valid
• Bramus!

Detect at-rule support in CSS with @supports at-rule(@keyword)

Back in January 2022, I wrote about an exciting new CSS Working Group decision: a function to detect at-rule support using @supports at-rule(@keyword). Fast forward to today, and the CSS Conditional Rules Module Level 5 specification has solidified how this feature works and Chromium (Chrome, Edge, etc.) is about to ship it in Chromium 148!

Original Content – Bram.us Valid
• Bramus!

Introducing view-transitions-mock: A non-visual Polyfill for Same-Document View Transitions

View Transitions are a powerful Modern Web feature allow for smooth seamless animated transitions two between different states of a web page. They can make for a much more pleasant user experience, but as with any new web platform feature, browser support is not yet fully universal so you need to add some fallback logic to your code.

view-transitions-mock bridges that gap by polyfilling the full JavaScript API surface of Same-Document View Transitions, without the animation bits.

Original Content – Bram.us Valid
• Bramus!

Experiment: Animating CSS position-area with View Transitions

CSS Anchor Positioning is a powerful tool, but one of the things that you cannot do natively (yet) is animating the position-area property. This blog post introduces a technique to animate position-area changes using View Transitions.

Original Content – Bram.us Valid
• Bramus!

Anchors Aweigh! (2026.02.28 @ State of the Browser)

Talk on CSS Anchor Positioning

Original Content – Bram.us Valid
• Bramus!

Anchors Aweigh! (2026.02.26 @ PHP Antwerp)

Talk on CSS Anchor Positioning.

Original Content – Bram.us Valid
• Bramus!

Chrome 145 146 adds Experimental Support for Vertical Tabs

Vertical Tabs are available behind a flag in Chrome 145 (current beta)

Original Content – Bram.us Valid
• Bramus!

Using 100vw is now scrollbar-aware (in Chrome 145+, under the right conditions)

From Chrome 145 onwards, 100vw will automatically subtract the size of the (vertical) scrollbar from it if you have forced the html element to always show a vertical scrollbar (using overflow[-y]: scroll) or if you reserve space for it (using scrollbar-gutter: stable). The same applies to vh with a horizontal scrollbar, as well as all small, large, and dynamic variants.

Original Content – Bram.us Valid
• Bramus!

How to Find the public WebKit Bug from the Apple-internal rdar:// Bug ID

If you read the Safari release notes – like the Safari 26.2 release notes – you see a lot of trailing “(12345678)”-mentions in the list of fixed bugs. These numbers are Apple-internal bug IDs, as used within Apple’s internal bug tracker (fka?) named “Radar”.

These numbers are not linked to anything because Radar is Apple-internal, so to external people these numbers are practically useless … or are they?

Original Content – Bram.us Valid
• Bramus!

CSS Scroll-Triggered Animations are coming to Chrome!

We have Scroll-Driven Animations. Now say hi to Scroll-Triggered Animations.

Original Content – Bram.us Valid
• Bramus!

CSS Wrapped 2025

Once again, it has been an AMAZING year for CSS and UI. To celebrate this, we – the Chrome CSS/UI DevRel Team – created another edition of CSS Wrapped!

Original Content – Bram.us Valid
• Bramus!

The Google Antigravity website, rebuilt with Modern CSS

As an experiment to see if Modern CSS is up to the task, I recreated the Google Antigravity website with Modern CSS.

Original Content – Bram.us Valid
• Bramus!

Anchor Positioning and the Inset-Modified Containing Block (IMCB)

If you kinda understand Anchor Positioning, but it still surprises you from time to time, then most likely this is the missing piece of information: the Inset-Modified Containing Block (or IMCB for short).

Original Content – Bram.us Valid
• Bramus!

Use overscroll-behavior: contain to prevent a page from scrolling while a <​dialog> is open

Chrome 144 features a small change to overscroll-behavior: it now also works on non-scrollable scroll containers. While this change might seem trivial, it fixes an issue developers have been dealing with for ages: prevent a page from scrolling while a (modal) <dialog> is open.

Original Content – Bram.us Valid
• Bramus!

Señors @ Scale: Modern CSS at Scale with Bramus

A while ago I joined Dan Neciu – whom I met at Frontmania in 2023 – on his “Señors @ Scale” podcast. We talked about all things CSS.

Original Content – Bram.us Valid
• Bramus!

Anchor Positioning is transform-aware in Chrome 144+

Starting with Chrome 144, Anchor Positioning is going to be transform-aware. From then on, anchoring will resolve against the bounding box of the transformed ancho