Latest Articles

Chris Coyier on

Faces.js and Playing with Densely Packed Grids

I only just recently saw Faces.js, a library for producing controllable cartoony avatars. It was launched in 2012, so I’m a little late to the party. It produces faces (busts, really) randomly, or with certain parameters locked to what you want. I think that’s a really cool idea, and if you needed this kind of […]

Chris Coyier on

What’s Going On in Dark Theme / Light Theme Land

There has been a fresh round of enthusiasm and writing around light mode / dark mode support for the web lately. I think it’s driven partially by the new light-dark() function in CSS (CSS Color Module Level 5 spec) that makes it easier to declare values that change depending on the mode. Here’s the basic […]

Chris Coyier on

Things That Can Break aspect-ratio in CSS

CSS has an aspect-ratio property, which has had full support since around 2021. It can be a very satisfying property to use, because it can help match how your brain 🧠 works or what the desired design outcome does better than forcing dimensions does. “I need a square here” or “I need to match the […]

Chris Coyier on

Document Collaboration (with Comments!)

There are a million document editing apps on the web. There are so many potential features that they can find customers depending on the perfect set of those features. Markdown supported? Markdown focused, or can you do more elaborate formatting? Collaborative? Realtime collaborative? Does it track history? What formats can it export it? Integrations? There […]

Preethi Sam on

A CSS-Powered Add/Remove Tags UI

Checkboxes and labels used to have to be right next to each other to be a potent UI duo. You could do trickery like this: But now, thanks to :has() in CSS, we’re not beholden to that structure anymore. We can :has() it all, as it is said. Now that these HTML elements have some autonomy, without losing their connection […]

Chris Coyier on

Node.js Debugging in Chrome DevTools

I was pairing with my co-worker last week. They had a super different debugging style than I do. I’m aware that I can do fancy things in DevTools, like set breakpoints and whatnot right from within DevTools and use well-placed debugger; statements to halt JavaScript execution and inspect things at that point. But I hardly […]