skip to content

CSS State Toggles [WIP]

» spec

An early proposal for creating declarative state controls in CSS, and styling elements based on the current state.

Monkey Writr

» code art

A monkey hitting keys at random for an infinite amount of time will eventually want some help writing Hamlet (or whatever).

You’re the monkey. We’re here to help.

CSS Containment 3 (Container Queries)

» spec

CSS Containment Level 3 defines Container Queries and container-relative units – allowing authors to build more intrinsic responsive components without knowledge of the overall layout.

CSS Cascade 6 (Scope)

» spec

Cascade & Inheritance Level 6 defines scoped styles – allowing authors to provide bounded ranges for selector-matching, and give priority to more ‘proximate’ scope origins.

CSS Cascade 5 (Layers)

» spec

Cascade & Inheritance Level 5 defines Cascade Layers – allowing authors to define explicit contained layers of specificity.

Use new selectors responsibly with selector queries

» video

Firefox 69 was the first to implement selector feature queries, but other browsers are following suit. I’ll show you how it works, and how to start using this new feature query right away.

How do you wrap long words in CSS?

» video

Horizontal text overflow has always been difficult to manage on the web. The default visible overflow is designed to make sure content remains accessible no matter the size of a containing box, but it’s not our only option.

Scroll Snap in CSS

» video

When we’re scrolling down a page, or through a gallery of images, snap-targets can help guide us from one section or image to the next. In the past, developers have used JavaScript to hijack scrolling, but now we can manage scroll alignment directly in CSS with only a few lines of code.

Inner & Outer Values of the Display Property

» video

The display property has been in CSS from the beginning, handling everything from block and inline boxes to list-items and full layout systems like flexbox or grid. Now the display syntax is getting an upgrade to match it’s multiple uses.

Why isn’t this CSS doing anything?

» video

There are a number of property & value combinations that can lead to CSS being inactive, and now Firefox will tell you why. Open the developer tools, and look for the greyed-out property with an info-box on hover.

Laying out Forms using Subgrid

» video

It’s a common pattern to align form labels and inputs in grid-like layout. I’ll show you how to do it quickly using CSS subgrid, with several quick fallbacks.

Subgrid for Better Card Layouts

» video

Card layouts are popular on the web, rows and columns of boxes with similar content. CSS grids can help align those cards, but it’s still be hard to line-up content inside the cards – headers and footers that might need more or less room.

Faster Layouts with CSS Grid

» video

For years, we’ve struggled to build resilient layouts on the web, but CSS Grid promises to change all that – and you can start using it now, with only a few properties and basic concepts.

What does revert do in CSS?

» video

I’ve often used initial and unset in my CSS – global keywords that can be applied to any property. The difference is small, but important: unset allows inheritance, while initial does not. But then Firefox implemented revert and I was confused – how is this one different from the others?!

Why is CSS so Weird?

» video

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?

Styling Lists in CSS

» video

When you create lists in HTML, browsers add bullet-points or numbers we call list markers. Now CSS gives us the tools to style those list markers, and even create our own!

Jump Start Sass

» book

Using Sass, you can write your stylesheets in a more concise, dynamic, and readable way, and cut down many of the repetitive tasks that come with writing vanilla CSS. This book provides a thorough introduction to Sass for the beginner. Co-writen with my friend Kitty Giraudel.

Herman

» open source

Design systems streamline development, communication, and consistency – but often rely on dedicated teams and extended budgets.

Riding SideSaddle*

» novel

A fragmented memory of friendship – navigating fluid genders, relationships, and bodies that resist order, category, or completion. Inspired by Margaret Clap, and the many myths of Hermaphroditus.

Accoutrement

» open source

Design systems must be meaningful to both humans and machines Accoutrement provides Sass design-token management that improves readability and consistency, while encouraging automation.

Queen City Magnetic

» album

Not our album, but we did write a few of the songs…

True

» open source

True is a full-featured unit-testing library for Sass. The core functionality is written in pure SassScript, so it can be used anywhere Sass is compiled. Advanced features are available with our JS test-runner integration.

The Obsolete Book

» performable website

An archival rhizome ecology in ten parts, and a reflection on the obsolescence of obsolescence – documented on the cloud, and open-sourced as a defense against post-post-obsolescence.

Into the Green Green Mud

» novel

A novel about new love, moving apart, and what comes next. A love story, and an after-love story – told wiith poetry and pictures.

Iron City

» album

For a few years, Teacup Gorilla performed & recorded music with Rachel Eisenstat – initially as Iron City, and later as Raven Jane.

Script: Missa Populi

» script

A modern, theatrical interpretation of the Catholic Mass – created by Grapefruit Lab and Teacup Gorilla.

Susy

» open source

Susy was a lightweight grid-layout engine for Sass, originally released in 2009. Over time, it became one of the most popular layout frameworks on the web, before retiring in 2020.

Script: Bigger Guns III

» script

An action comedy for the stage, based on our favorite movie tropes. The script was devised by the entire ensemble, lead by Michelle Milne, Miriam, Emily Swora, and Ben Jacobs. I don’t believe this is the final script…