At Middlesbrough Front End 2025 I gave a talk about some of the more exotic applications of View Transitions| Bram.us
Monthly Archives: May 2025| www.bram.us
At JSHeroes 2025 I gave a talk in Scroll-Driven Animations.| Bram.us
Slides + Recording of the talk “Supercharge Web UX with View Transitions” I gave at WebExpo.| Bram.us
For this year’s Google I/O, I recorded the session “Web animations today and tomorrow”. Check it out to learn how to guide, inform, and delight users by adding subtle and supportive animations to your web UIs.| Bram.us
Instead of duplicating an animation on the ::view-transition-group pseudo, you can also rely on CSS transitions on the original element … if you’ve set it up correctly.| Bram.us
In April I attended #BlinkOn, the conference for web platform contributors in the Chromium open source project. At the conference I gave a presentation about “CSS Parser Extensions”, a wild idea I have to fix CSS polyfilling once and for all. If you didn’t know, polyfilling CSS features is extremely hard, mainly because the CSS Parser discards what it does not understand. So what if, instead of having authors write their own parser and cascade to polyfill a CSS feature, they could teach...| Bram.us
After a wonderful week in San Francisco and Mountain View, the week ended in a disaster when my colleague and friend Adam was told to find another role within the company.| Bram.us
To smoothly animate things like borders as part of a View Transition, you need to duplicate that animation onto the ::view-transition-group. For best effect, have the View Transition separately capture the background and foreground of the element you’re animating.| Bram.us
New in Chrome 134 on Android: the ability to place the Address Bar (aka “Omnibox”) at the bottom. To enable it, go to Chrome’s Settings, locate and tap “Address Bar”, and choose “Bottom”.| Bram.us
Beware when manipulating the coordinates of the View Transition’s ::view-transition-group(*) pseudo. Depending on where you read those coordinates from, you might end up with layout jumps when writing them back. This post details the pitfalls and how to deal with them, unlocking more performant animations on the ::view-transition-group() pseudo along the way.| Bram.us
A few lines of JavaScript to get all animations linked to an active View Transition.| Bram.us
@bramus/style-observer is a MutationObserver for CSS. It allows you to attach JavaScript callbacks to changes in computed values of CSS properties| Bram.us
Awaiting browser support for at-rule(), here’s how you do it.| Bram.us
An answer to a headscratcher Tyler Gaw (and Chris Coyier) ran into …| Bram.us
Learn all about “Invalid At Computed Value Time” or IACVT for short.| Bram.us
Dark Mode Toggle Buttons should be a browser feature. Thanks to the Web Preferences API, that might become a reality someday.| Bram.us
Slides + Video of a talk covering the CSS Cascade, which I gave at CSS Day 2022.| Bram.us
A small piece of JavaScript to run a scroll-driven animation only once.| Bram.us
When authoring CSS we have to carefully think about how we write and structure our code. Cascade Layers (CSS @layer) aim to ease this task.| Bram.us