A blog about web development, HTML, CSS, JavaScript, and web accessibility.

I’m speaking at Web Day Out 2026

The first Web Day Out conference is taking place next year on March 12, my birthday, in Brighton, and I'm one of eight speakers.

Dealbreaker bugs in native popovers

One of my clients decided to write a custom popover component that uses native popovers under the hood. We built the component and were happy with it. They were about to ship it until we realised there was an accessibility bug so severe that it was a dealbreaker for us.

What's an interactive element?

Two years ago, I wrote an article about the dialog element. I tested where focus goes when you open a modal dialog via the showModal() method. I tried different combinations of elements and attributes to see what happens because back in 2023, the behaviour was very inconsistent.

Never lose a z-index battle again

Recently, I learned about numeric keywords. Since I was terrible in school, I didn't know what to do with them, but when I saw infinity, I immediately thought of a great use case.

Breaking up with my X

About 2.5 years ago, I was banned from Twitter for no apparent reason. I wrote about it on this blog and described the events and personal consequences.

Close requests, close watchers, and the dialog element

The latest version of Chrome (134) comes with a new light-dismiss behavior for the dialog element, which enables a native click-outside feature. That's fantastic! Reading the announcement, I wondered how many ways there are to close a dialog element.

How to make LibreWolf your default browser on macOS

I recently switched to LibreWolf as my default browser, and I also wanted links to open by default inside it, but there isn't an option in LibreWolf like in other browsers.

Maybe don't use custom properties in shorthand properties

I've already written about how the fact that the initial value of a custom property is a guaranteed-invalid value can lead to unexpected results. Today, I realized how that can be problematic when you use custom properties in shorthand properties.

#unplugtrump

Since Trump took office on Jan. 20 this year, he and his henchman have done many things that bewildered me. I assume that most of you are following the news, so you know what I’m talking about, but here are some things I found especially cruel and disgusting.

Is the button focusable?

Let’s play a game. I’ll hide a button using different techniques in HTML and CSS, and you have to guess whether it’s still focusable.