All blogs / Frontend / CSS / browsers
Bram.us
A rather geeky/technical weblog, est. 2001, by Bramus
Frontend / CSS / browsersJavaScript / TypeScriptWeb development
- Posts
- 7,126 from 30 Sep 2003 to 22 Oct 2026
- Posting
- weekly (47 in the last year)
- Kind
- personal blog
- Feed
- https://www.bram.us/feed/
Latest
October 2026
- GTA.js, a reimplementation of the 1997 Grand Theft Auto engine in JavaScript and WebGL
- Scroll-Triggered Animations Debugger (DevTools Extension)
- Introducing css-typed-om , a complete and WPT-tested polyfill for CSS Typed OM
- <calc-input> , a custom input element that accepts mathematical formulas
- caniname : CLI tool to check project name availability across Netlify and NPM (and other sources)
- Bringing Microsoft Internet Explorer’s proprietary “Interpage Transitions” back to Modern Browsers using the View Transition API
September 2026
- Show keystrokes on a website with the <show-keystrokes> custom element
- New in Chrome 154: iframes that automatically resize themselves to their content
- Ship cleaner packages (without the ./dist or ./src folder) by publishing a subfolder to NPM
- Introducing <rich-input> , a GitHub-like search/filter text input to embed on your site
- WebKit supports interactive-widget … and hopefully Safari will too?
- Introducing <mermaid-element> , a custom element to display Mermaid diagrams
- Animating CSS Grid Layouts with CSS Anchor Positioning
- Introducing <hic-pageflip> : A Pageflip/Flipbook Custom Element powered by HTML-in-Canvas
August 2026
- Feature Detecting “Undetectable” CSS Features with @supports named-feature()
- The Future of CSS: Target Multiple Classes with the Class Prefix Selector
- The Case for Tri-State Dark Mode Toggles
- Unlock Immediate Diagonal Scrolling with CSS scroll-axis-lock: none
- MDN Traffic Browser
July 2026
- Styling the Navigation: Declarative Route and Navigation Matching in CSS
- What’s new in Web UI (Google I/O 2026)
June 2026
- Cranking View Transtions up to 11 (2026.05.07 @ All Day Hey!)
- Cranking View Transtions up to 11 (2026.04.28 @ Beyond Tellerrand)
- Do Websites Need to Function Exactly the Same on Every Platform?
- View Transitions: Use the new attr() or match-element for the view-transition-name ?
April 2026
March 2026
- CSS position: sticky now sticks to the nearest scroller on a per axis basis!
- Cranking View Transtions up to 11 (2026.03.25 @ devs.gent)
- More Easy Light-Dark Mode Switching: light-dark() is about to support images!
- Detect at-rule support in CSS with @supports at-rule(@keyword)
- Introducing view-transitions-mock : A non-visual Polyfill for Same-Document View Transitions
- Experiment: Animating CSS position-area with View Transitions
February 2026
January 2026
- Chrome 145 146 adds Experimental Support for Vertical Tabs
- Using 100vw is now scrollbar-aware (in Chrome 145+, under the right conditions)
December 2025
- How to Find the public WebKit Bug from the Apple-internal rdar:// Bug ID
- CSS Scroll-Triggered Animations are coming to Chrome!
- CSS Wrapped 2025
- The Google Antigravity website, rebuilt with Modern CSS
- Anchor Positioning and the Inset-Modified Containing Block (IMCB)
November 2025
- Use overscroll-behavior: contain to prevent a page from scrolling while a <dialog> is open
- Señors @ Scale: Modern CSS at Scale with Bramus
- Anchor Positioning is transform-aware in Chrome 144+
- Faking Two-Phase View Transitions with the Navigation API’s precommitHandler
- Animating CSS width or height no longer forces a Main Thread animation (in Chrome, under the right conditions)
- Combining Scroll-Driven Animations with @starting-style
October 2025
- Solved by CSS Scroll State Queries: hide a header when scrolling down, show it again when scrolling up.
- CSS @starting-style debugging is available in Chrome DevTools!
- View Transitions Feature Explorer
- The CSS Podcast is back! And I’m a co-host now.
- What’s New in View Transitions (2025 Update)
September 2025
- A custom --light-dark() function in CSS that works with any type of value (not just colors!) in just 3 LOC
- Prevent clipping issues (and more) in View Transitions by using Nested View Transition Groups
- Ready for Developer Testing: Scoped View Transitions
June 2025
May 2025
- Scroll-Driven Animations with CSS (2025.05.30 @ JSHeroes)
- Supercharge Web UX with View Transitions (2025.05.28 @ WebExpo)
- Web animations today and tomorrow (Google I/O 2025)
- View Transitions Applied: Smoothly animating a border-radius with a View Transition, revisited
- Polyfilling CSS with CSS Parser Extensions
April 2025
March 2025
- View Transitions Applied: Smoothly animating a border-radius with a View Transition
- Place the Address Bar at the bottom in Chrome on Android
- View Transitions Applied: Dealing with the Snapshot Containing Block
February 2025
- Solved by StyleObserver : Element.matchContainer()
- CSS @function + CSS if() = 🤯
- CSS Custom Functions are coming … and they are going to be a game changer!
- View Transitions Applied: More performant ::view-transition-group(*) animations
January 2025
- View Transitions Snippets: Keeping the page interactive while a View Transition is running
- MPA View Transitions Deep Dive
- CSS attr() gets an upgrade
- Move elements around the DOM while preserving their state with moveBefore
- View Transitions Snippets: Keeping track of the old and new positions of a transitioned element
- View Transitions Snippets: Getting all Animations linked to a View Transition
December 2024
- View Transitions Experiment: Automatically trigger a View Transition when a JavaScript Property of an Element changes
- Misconceptions about View Transitions
- Animatable Accordions (2024.11.27 @ devs.gent)
- The Future of CSS: Construct <custom-ident> and <dashed-ident> values with ident()
- Re-imagine the web with View Transitions
- Spot Non-Composited Animations in Chrome DevTools
- CSS Wrapped 2024
- Re-imagine the web with Scroll-Driven Animations
- Control the Viewport Resize Behavior on mobile with interactive-widget
- More options for styling <details>
November 2024
- View Transitions Experiment: Automatically triggered View Transitions with MutationObserver
- Supercharge Web UX with View Transitions (2024.10.18 @ React Brussels)
October 2024
- Chrome Dark Mode Toggle v1.1
- Scroll-driven animated card stack with scroll snap events
- CSSNestedDeclarations is coming to all browsers to improve CSS Nesting!
- Feature detect Style Queries Support in CSS
- Benchmarking the performance of CSS @property
September 2024
- Solved by CSS Scroll-Driven Animations: hide a header when scrolling down, show it again when scrolling up.
- The CSS Podcast 089: View Transitions
- Observing Style Changes (2024.09.25 @ devs.gent)
- Feature detecting Scroll-Driven Animations with @supports : you want to check for animation-range too
- A better capturing mode for View Transitions
- Animate to height: auto; (and other intrinsic sizing keywords) in CSS
- Introducing @bramus/caniuse-cli , a CLI tool for “Can I Use …”
August 2024
July 2024
- Feature detect CSS @starting-style support
- Feature detect CSS @property support
- Computing cos(25deg) in CSS
June 2024
- Cross-Document View Transitions for MPAs are here! (2024.06.05 @ CSS Day Pre-Event)
- CSS-only Custom Range Slider with Motion
May 2024
- Scroll-Driven Animations with CSS (2024.05.30 @ WebExpo)
- Cross-Document View Transitions for MPA: you need @view-transition to opt-in, not the meta tag
- MPA View Transitions are here! (2024.05.23 @ JSHeroes)
- Multi-page application View Transitions are here (Google I/O 2024)
- Introducing “Unleash the Power of Scroll-Driven Animations”
- Misconceptions about CSS Specificity
April 2024
- Scroll-Driven View Transitions – If View Transitions and Scroll-Driven Animations had a baby … (2024.04.25 @ CSS Café)
- CSS color-scheme -dependent colors with light-dark()
- What if you had real control over Light Mode / Dark Mode on a per-site basis?
February 2024
- CSS Foundations: What is IACVT?
- CSS ::backdrop now inherits from its originating element
- Tailwind marketing and misinformation engine
- View transitions: Handling aspect ratio changes
- Volvo Cars Design System: Our future CSS strategy
- Syntax Highlighting code snippets with Prism and the Custom Highlight API
- Scroll-Driven Animations: You want overflow: clip , not overflow: hidden
January 2024
December 2023
- The mysterious case of using CSS animation-composition: accumulate on a scale transform
- CSS Wrapped 2023
- Embrace the Platform
November 2023
October 2023
- Scoped styling with CSS @scope (2023.10.19 @ Full Stack Europe)
- Solved by CSS Scroll-Driven Animations: Style an element based on the active Scroll Direction and Scroll Speed
- What’s new in CSS? (2023.10.12 @ Frontmania)
- The Future of CSS: Easy Light-Dark Mode Color Switching with light-dark()
- LearnWithJason: CSS-Only Scroll-Driven Animations
- Run a Scroll-Driven Animation only once
- Animate between states with the View Transition API (2023.09.27 @ devs.gent)
September 2023
- Solved by CSS Scroll-Driven Animations: Detect if an element can scroll or not
- Scroll-Driven Animations Debugger (DevTools Extension)
- Mastodon Redirector – A browser extension to rewrite external Mastodon URLs to your own instance
August 2023
- CSS @property improvements in Chrome DevTools (Chrome 118)
- A quick introduction to CSS @scope
- Scroll-Driven Animations and View Transitions (2023.06.09 @ CSS Day)
July 2023
June 2023
- Style Recalculation Secrets They Don’t Want You To Know | Patrick Brosset | CSS Day 2023
- Solved by CSS Scroll-Driven Animations: A :snapped selector
- Synchronize videos, 3D-models, etc. to Scroll-Driven Animations
- How Blink invalidates styles when :has() in use?
- Creating Scroll-Triggered Animations by combining Scroll-Driven Animations, Custom Properties, Style Queries, and Transitions
- Cyclic Dependency Space Toggles
- Introducing scroll-driven-animations.style
- Syntax: Supper Club × Bramus Van Damme on CSS
May 2023
- The Yellow Fade Technique with Modern CSS using @starting-style
- What’s new in web animations (Google I/O 2023)
Every year
2026 362025 392024 472023 392022 1432021 4552020 4642019 3472018 1892017 3592016 3502015 2872014 3962013 4862012 5602011 3752010 1042009 2122008 4442007 1,0832006 6742005 182004 142003 5