Skip to main
Video
CSS cascade diagram

Why is CSS so Weird?

How can we design for an unknown & infinite canvas?

CSS is the design language of the web – one of three core web languages – but it also seems to be the most contentious and often perplexing. It’s too easy and too hard, too fragile and too resilient. Love it or hate it, CSS is weird: not quite markup, not quite programming in the imperative sense, and nothing like the design programs we use for print. How did we get here?

CSS is for documents, and also for apps, on a universally accessible web.

This is a young platform, and all the core languages are growing fast, with CSS advancing leaps and bounds over the last few years, but there’s a real problem we can’t ignore – the web is display-agnostic:

This implies no device-specific markup, or anything which requires control over fonts or colors.

—The first website from CERN

Here we are, putting fonts and colors on the web. But it’s worth taking a step back and asking: what does it even mean to design on an unknown and infinite canvas? This problem isn’t new, it’s not going away, and there are no simple answers. Design on the web will always be weird – but CSS is a living document, and we have the power to keep making it better.

Recent Videos

  1. Video post type

    Smashing Hour with Miriam Suzanne

    I joined Geoff Graham for a Smashing live stream to talk about CSS, web standards, music, and more!

    see all Video posts
  2. Video post type

    Web Development Is Theater

    I joined Den Delimarsky on the Work Item podcast to talk about my path as a developer – from building a website for my theater company, to building a career and a company around it. In this show, we talk about the power of the web, and how CSS is…

    see all Video posts
  3. Video post type

    Demystifying CSS Container Queries

    CSS Container Queries promise even more powerful styling approaches, but… what the heck are they? How do they actually work? Miriam joined Jason to teach and explore Container Queries in live code.

    see all Video posts