Home/Geoff Graham
Author
GGGeoff Graham

Geoff Graham

206 articles by Geoff Graham.

Frontend — MicroLighter: Syntax Highlighter

MicroLighter: Syntax Highlighter

Syntax highlighting for code blocks without the complicated markup, spans, classes, and bloated JavaScript, courtesy of Uncle Dave. MicroLighter: Syntax Highlighter originally handwritten and published with love on CSS-Tricks . You should really get the newsletter as well.

GGGeoff GrahamGeoff Graham·August 25, 2026Frontend
Frontend — Resolved: CSS Class Prefix Selector

Resolved: CSS Class Prefix Selector

A newly resolved proposal would allow us to select classes that are a prefix for variations with a wildcard, like .prefix-* . Resolved: CSS Class Prefix Selector originally handwritten and published with love on CSS-Tricks . You should really get the newsletter as well.

GGGeoff GrahamGeoff Graham·August 21, 2026Frontend
Frontend — CSS Navigation Matching, Early Days

CSS Navigation Matching, Early Days

Apply a style when someone navigates from one specific page to another. The idea being it'd make the sources for cross-document view transitions declarative in CSS rather than managing that stuff in JavaScript. CSS Navigation Matching, Early Days originally handwritten and published with love on CSS-Tricks . You should really get the newsletter as well.

GGGeoff GrahamGeoff Graham·August 19, 2026Frontend
Frontend — WordPress.com Student Plan

WordPress.com Student Plan

As someone who teaches beginning web development, I find that building a WordPress site makes for a great final project. Hosting those projects has always been a roadblock though. WordPress.com Student Plan originally handwritten and published with love on CSS-Tricks . You should really get the newsletter as well.

GGGeoff GrahamGeoff Graham·August 19, 2026Frontend
Frontend — Dark mode toggles: two states are enough

Dark mode toggles: two states are enough

Lea's pushing back on light/dark mode implementations that display three state options for visitors: light, dark, and system. Dark mode toggles: two states are enough originally handwritten and published with love on CSS-Tricks . You should really get the newsletter as well.

GGGeoff GrahamGeoff Graham·August 17, 2026Frontend
Frontend — SmashingConf Freiburg 2026, September 7-10

SmashingConf Freiburg 2026, September 7-10

Smashing Magazine’s in-person conferences are back and returning to the wonderful city of Freiburg next month, September 7–10. SmashingConf Freiburg 2026, September 7-10 originally handwritten and published with love on CSS-Tricks . You should really get the newsletter as well.

GGGeoff GrahamGeoff Graham·August 10, 2026Frontend
Frontend — Using and Styling the Dialog Element

Using and Styling the Dialog Element

There's a lot of nuance to the <dialog> element, a seemingly little piece of web architecture. I've got some notes from digging into it. Using and Styling the Dialog Element originally handwritten and published with love on CSS-Tricks . You should really get the newsletter as well.

GGGeoff GrahamGeoff Graham·August 7, 2026Frontend
Frontend — Prop For That

Prop For That

Props for That creates live props based things CSS can't normally see in the browser. Things like cursor position, progress values, certain form states, current time, scroll velocity.

GGGeoff GrahamGeoff Graham·June 16, 2026Frontend
Design & UX — Generative UI Notes

Generative UI Notes

Looking at research and experiments that are designed to automatically generate user interfaces based on user preferences.

GGGeoff GrahamGeoff Graham·March 26, 2026Design & UX
Frontend — ReliCSS

ReliCSS

Stu Robson's ReliCSS (clever name!) tool can excavate outdated CSS in your codebase that have modern CSS solutions.

GGGeoff GrahamGeoff Graham·January 28, 2026Frontend
Engineering — Open Props @custom-media Recipes

Open Props @custom-media Recipes

The @custom-media at-rule has landed in Firefox Nightly! I couldn't find it in the release notes but Adam Argyle's on the beat noting that it's behind a flag

GGGeoff GrahamGeoff Graham·January 23, 2026Engineering
Frontend — Quick Hit #88

Quick Hit #88

The new CSS grid lanes (aka masonry) layout spec continues to evolve... item-tolerance becomes flow-tolerance (Issue #10884).

GGGeoff GrahamGeoff Graham·January 22, 2026Frontend
Networking — HTTP Archive 2025 Web Almanac

HTTP Archive 2025 Web Almanac

I love me some good web research reports. I'm a sucker for them. HTTP Archive's Web Almanac is one report I look forward to every year, and I know I'm not

GGGeoff GrahamGeoff Graham·January 16, 2026Networking
Frontend — "I Heart CSS" DailyDev Squad

"I Heart CSS" DailyDev Squad

If you're reading this, chances are you already have some sort of way that you're following when we publish new content, whether that's RSS, Bluesky,

GGGeoff GrahamGeoff Graham·January 16, 2026Frontend
Frontend — Thank You (2025 Edition)

Thank You (2025 Edition)

This is the best job I've had in my life and it's only possible because you keep showing up each day to read, learn, share, and discuss all-things-front-end (and a little CSS, of course) with us.

GGGeoff GrahamGeoff Graham·December 23, 2025Frontend
Engineering — Toon Title Text Generator

Toon Title Text Generator

Andy Clarke with a brand-new resource. It generates the sort of fun typography that Andy commonly uses in his own work that's geared towards cartoon headings.

GGGeoff GrahamGeoff Graham·December 15, 2025Engineering
Frontend — Quick Hit #65

Quick Hit #65

Firefox Nightly adds CSS anchor positioning support, which you can learn a lot more about in our complete guide.

GGGeoff GrahamGeoff Graham·December 3, 2025Frontend
Frontend — Quick Hit #62

Quick Hit #62

CSS Masonry shaping up now that the CSSWG has landed on display: grid-lanes to trigger the layout switch.

GGGeoff GrahamGeoff Graham·November 13, 2025Frontend
Frontend — Quick Hit #61

Quick Hit #61

Bramus shares that Chrome Canary no longer forces CSS animations using width and height properties to run on the main thread.

GGGeoff GrahamGeoff Graham·November 13, 2025Frontend
Frontend — Quick Hit #60

Quick Hit #60

Alignment might be one of the more confusing (or misunderstood) parts of CSS. I love having a thorough explanation from someone like Temani Afif who has it

GGGeoff GrahamGeoff Graham·September 29, 2025Frontend
Frontend — Quick Hit #59

Quick Hit #59

A working draft for CSS Environment Variables is posted. Same concept as var(), but env() is a “global” variable at the document level for values the user

GGGeoff GrahamGeoff Graham·September 25, 2025Frontend
Frontend — What're Your Top 4 CSS Properties?

What're Your Top 4 CSS Properties?

Everyone has a different opinion which is great because it demonstrates the messy, non-linear craft that is thinking like a front-end developer.

GGGeoff GrahamGeoff Graham·September 10, 2025Frontend
Engineering — Quick Hit #55

Quick Hit #55

Really good to see Firefox Nightly join in the URL text fragments fun. Looks like we'll have broad support super soon!

GGGeoff GrahamGeoff Graham·August 18, 2025Engineering
Frontend — CSS-Questions

CSS-Questions

CSS-Questions is a mini site where you can test your CSS knowledge with over 100 questions.

GGGeoff GrahamGeoff Graham·August 12, 2025Frontend
Design & UX — Stuff & Nonsense Practical Layout Workshop

Stuff & Nonsense Practical Layout Workshop

Web design veteran Andy Clarke is offering a two-hour workshop all about creating practical and creative page layouts this September 18. Register and save a few bucks with a coupon code.

GGGeoff GrahamGeoff Graham·August 11, 2025Design & UX
Frontend — Quick Hit #54

Quick Hit #54

The WebKit blog is back with a follow-up on its CSS Masonry coverage. It leans into a direction (display: grid), and that direction is different than Chrome's

GGGeoff GrahamGeoff Graham·August 8, 2025Frontend
Engineering — The Layout Maestro Course

The Layout Maestro Course

Layout. It's one of those easy-to-learn, difficult-to-master things, like they say about playing bass. Not because it's innately difficult to, say, place two

GGGeoff GrahamGeoff Graham·July 11, 2025Engineering
Frontend — Quick Hit #51

Quick Hit #51

An early preview of Chrome 139 includes six new CSS features, including the first hint of custom functions.

GGGeoff GrahamGeoff Graham·June 27, 2025Frontend
Frontend — KelpUI

KelpUI

KelpUI is new library that Chris Ferdinandi is developing, designed to leverage newer CSS features and Web Components. I've enjoyed following Chris as he's published an ongoing series of articles detailing his thought process behind the library, getting deep into his approach. You really get a clear picture of his strategy and I love it.

GGGeoff GrahamGeoff Graham·June 26, 2025Frontend
Engineering — Quick Hit #49

Quick Hit #49

Chrome 137 introduces the newly-specced if() function. Una Kravets posted a nice video overview and Temani Afif writes about it as well.

GGGeoff GrahamGeoff Graham·June 3, 2025Engineering
Engineering — Quick Hit #48

Quick Hit #48

Firefox 139 includes an update where content inside a <details> element is included in an in-page search. Previously, that content was ignored when the

GGGeoff GrahamGeoff Graham·May 27, 2025Engineering
Design & UX — You can style alt text like any other text

You can style alt text like any other text

Clever, clever that Andy Bell. He shares a technique for displaying image alt text when the image fails to load. Well, more precisely, it's a technique to apply styles to the alt when the image doesn't load, offering a nice UI fallback for what would otherwise be a busted-looking error.

GGGeoff GrahamGeoff Graham·May 22, 2025Design & UX
Frontend — Scroll-Driven Animations Inside a CSS Carousel

Scroll-Driven Animations Inside a CSS Carousel

Hey, isn't there a fairly new CSS feature that works with scroll regions? Oh yes, that's Scroll-Driven Animations. Shouldn't that mean we can trigger an animation while scrolling through the items in a CSS carousel?

GGGeoff GrahamGeoff Graham·May 15, 2025Frontend
Frontend — CSS shape() Commands

CSS shape() Commands

The CSS shape() function recently gained support in both Chromium and WebKit browsers. It's a way of drawing complex shapes when clipping elements with the clip-path property.

GGGeoff GrahamGeoff Graham·May 2, 2025Frontend
Architecture — Quick Hit #46

Quick Hit #46

Straight from the W3C Technical Architecture Group: "e see an urgency to have a strict timeline for the removal of third-party cookies."

GGGeoff GrahamGeoff Graham·May 2, 2025Architecture
Design & UX — Open Up With Brad Frost, Episode 2

Open Up With Brad Frost, Episode 2

Brad Frost is running this new little podcast called Open Up. Folks write in with questions about the "other" side of web design and front-end development —

GGGeoff GrahamGeoff Graham·April 29, 2025Design & UX
Engineering — Quick Hit #43

Quick Hit #43

Browsers are planning to update UA stylesheets for nested <h1> elements. It's a good idea to make sure your nested heading styles aren't relying on the

GGGeoff GrahamGeoff Graham·April 11, 2025Engineering
Frontend — CSS-Tricks Chronicles XLIII

CSS-Tricks Chronicles XLIII

This CSS-Tricks update highlights significant progress in the Almanac, recent podcast appearances, a new CSS counters guide, and the addition of several new authors contributing valuable content.

GGGeoff GrahamGeoff Graham·April 11, 2025Frontend
Frontend — CSS Carousels

CSS Carousels

Chrome has prototyped these features and released them in Chrome 135. Adam Argyle has a wonderful explainer over at the Chrome Developer blog. Kevin Powell has an equally wonderful video where he follows the explainer. This post is me taking notes from them.

GGGeoff GrahamGeoff Graham·April 9, 2025Frontend
Frontend — SMIL on?

SMIL on?

Well, it turns out that SVG's built-in animation features were never deprecated as planned. Sure, CSS and JavaScript are more than capable of carrying the load, but it's good to know that SMIL is not dead in the water as previously thought, and is actually well-supported.

GGGeoff GrahamGeoff Graham·April 2, 2025Frontend
Engineering — Quick Hit #41

Quick Hit #41

Ooo, look at that: Safari Technology Preview 215 adds support for scroll-driven animations, anchor positioning, and text-wrap: pretty. That's a good sign that

GGGeoff GrahamGeoff Graham·March 19, 2025Engineering
Engineering — Web Components Demystified

Web Components Demystified

Scott Jehl released a course called Web Components Demystified. This is my full set of notes from Scott's course. You'll still want to take the course on your own, and I encourage you to because Scott is an excellent teacher who makes all of this stuff extremely accessible, even to noobs like me.

GGGeoff GrahamGeoff Graham·March 14, 2025Engineering
Engineering — Quick Hit #39

Quick Hit #39

The CSSWG has voted to add a size keyword that's shorthand for the width and height properties.

GGGeoff GrahamGeoff Graham·March 14, 2025Engineering
Design & UX — Smashing Meets Accessibility

Smashing Meets Accessibility

The videos from Smashing Magazine's recent event on accessibility were just posted the other day. I was invited to host the panel discussion with the speakers, including a couple of personal heroes of mine, Stéphanie Walter and Sarah Fossheim. But I was just as stoked to meet Kardo Ayoub who shared his deeply personal story as a designer with a major visual impairment.

GGGeoff GrahamGeoff Graham·March 10, 2025Design & UX
Frontend — Quick Hit #37

Quick Hit #37

The very first public draft of the CSS Form Control Styling Module Level 1 specification has been published as of yesterday. Still a work-in-progress but what

GGGeoff GrahamGeoff Graham·March 6, 2025Frontend
Frontend — Scroll Driven Animations Notebook

Scroll Driven Animations Notebook

Adam's such a mad scientist with CSS. He's been putting together a series of "notebooks" that make it easy for him to demo code. He's got one for gradient

GGGeoff GrahamGeoff Graham·February 13, 2025Frontend
Engineering — Make Any File a Template Using This Hidden macOS Tool

Make Any File a Template Using This Hidden macOS Tool

Stationery Pad is a handy way to nix a step in your workflow if you regularly use document templates on your Mac. The long-standing Finder feature essentially tells a file’s parent application to open a copy of it by default, ensuring that the original file remains unedited.

GGGeoff GrahamGeoff Graham·February 10, 2025Engineering
Career & Teams — Chrome 133 Goodies

Chrome 133 Goodies

Did you see the release notes for Chrome 133? It's currently in beta, but the Chrome team has been publishing a slew of new articles with pretty incredible demos that are tough to ignore. I figured I'd round those up in one place.

GGGeoff GrahamGeoff Graham·January 31, 2025Career & Teams