Logo

dev-resources.site

for different kinds of informations.

A couple CSS tricks for HTML Dialog elements

Published at
1/9/2025
Categories
html
css
Author
Cassidy Williams
Categories
2 categories in total
html
open
css
open
A couple CSS tricks for HTML Dialog elements

I recently was messing around with the HTML <dialog> element. It’s really handy for native dialogs without a ton of JavaScript.

If you want to see a decent quick example of them in action, you can check out my game Jumblie and click the Settings gear button at the top.

Anyway! There’s a couple tricks that you might find handy when you’re implementing your own <dialog>s on your websites!

Blur the <dialog> backdrop

The ::backdrop CSS pseudo-element isn’t limited to <dialog>s. You can style it however you want, but if you want to keep it simple, you can add a blur filter like so to be able to blur the background ever so slightly:

dialog::backdrop {
  backdrop-filter: blur(2px);
}

You can add other properties, of course, like background-color for example. I also wrote about styling pseudo-elements with JavaScript if you want to do more with this in general!

Disable page scrolling when a <dialog> is open

This is a funky selector here, but it’s pretty cool. When a <dialog> is open, it adds an open attribute to the tag.

body:has(dialog[open]) {
  overflow: hidden;
}

This selector checks to see if the <body> has a <dialog> with the open attribute. If so, it disables scrolling on the page!

Granted, the weirdness is that if your dialogs are tall, you might need to enable scrolling in them separately, but it keeps the page behind your dialog from moving around when you scroll.

That’s all, folks! I hope this was helpful for you!

Featured ones: