Container queries & units have a lot to offer
as we enter a more content-out era of Intrinsic Web Design,
but they also come with some limitations of their own.
Join Miriam to learn about how the feature works,
how to start using it in production,
and what to look forward to as Container Queries continue to evolve.
Earlier this year,
all the major browsers released Cascade Layers,
with the potential to fundamentally change
how we write styles –
especially in an age of design systems,
component libraries,
and third-party tools.
But fundamental changes
require us to re-think
how all the pieces fit together.
I want to re-think the front-end of my site,
without too much change to
the (Eleventy/Markdown) content that drives it.
And I want to do it slowly.
There’s a well-established ‘best practice’
that CSS authors
(as well as linters and minifiers)
should remove units from any 0
value.
It’s a fine rule in most cases,
but there are a few common situations
where it will break your code.
All browsers add an 8px
margin
on the body
element –
it’s part of the w3c-recommended
default stylesheet
which browsers generally use
as a starting point
for their own ‘user agent’ styles.
But why 8px
?
Where does that come from?
There’s a new web API proposal
for transitioning shared-elements across pages.
It’s great for making smooth page transitions,
but what if we apply it to individual elements
with changing styles on a single page?
Working on Sass
support for color spaces,
I ran into a question
about the proper handling of hwb()
colors.
That lead me down a rabbit hole,
exploring the edges of hwb
(and powerless color channels) in CSS.
In CSS,
there are compound selectors
and also complex selectors,
and I never remember which is which.
Do you need to learn the difference?
Probably not.
But I’m tired of looking it up.
I was Interviewed by Rachel Andrew
for the web.dev Designcember
(and finally got around to posting a link here)
Declarative controls for presentational state
The other day, I posted an article about
implementing webmentions
on this site.
Today, I’m battling an endless stream
of spam in my mentions.
I’m really into the IndieWeb,
or the ideas behind it.
I like to own my data,
I like a space to play and experiment,
I like the idea of syndicating content
to be read/experienced in a variety of formats.
I love microformats,
and RSS feeds,
and… wait… how do webmentions work?
Cascade layers are a new CSS feature
that allows us to define
explicit contained layers of specificity.
Miriam talks to Now What?
about why the internet looks the way it does,
why designers and developers need to collaborate
and how the future of the web
must be built around inclusivity and respect.
We discuss the role of the ‘design engineer’
and what it means for workflows,
collab with their product team,
and the end-user experience.
Over the last decade,
Responsive Web Design and Object Oriented CSS
have grown from exciting new trends
into the foundations of modern, component-driven web design.
But our medium is not done evolving.
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.
A podcast focusing on front end development
but also covering a wide range of web development and design topics.
We talked about CSS, Sass,
and work being done in the W3C CSS Working Group.
Igalia’s Brian Kardell
sits down to chat with Miriam and Rachel Andrew
about who works on standards,
and who pays for that work.
In this episode of Syntax,
Scott and Wes talk with Miriam
about all things CSS –
container queries, layers, scoping, and more!
I talk with Claire and Steph
about my journey into webdev and onto the CSSWG,
what I find frustrating about how others use CSS,
and the three specs I’m working on.
Working on a new CSS feature like Container Queries,
one of the most important considerations is
to ensure a “migration path” –
a way for developers to start integrating the new code,
without breaking their sites on legacy browsers.
I chat with Bruce Lawson & Vadim Makeev
about Sass & Susy,
CSS Layers & compatibility,
Container Queries,
and the CSS Working Group.
Starting a new season of the Smashing Podcast
with a look at the future of CSS.
What new specs will be landing in browsers soon?
Drew McLellan talks to Miriam to find out.
Media-queries allow an author
to make style changes
based on the overall viewport dimensions –
but in many cases,
authors would prefer styling modular components
based on their context within a layout.
New CSS proposals like Container Queries,
Cascade Layers, Scoped Styles, and Nesting
are all aimed at improving the way we write
responsive components and design systems.
CSS Custom Properties (aka Cascading Variables)
have gained broad browser support since 2015 –
but what are they good for,
and why do we need them?
“What is one thing you learned about building websites this year?”
I join Ari, Ben, and Tessa to talk about
getting into CSS from other languages,
the absurdly massive problem CSS is designed to solve,
and the mental model behind the language.
As I spend more of my time
working on the CSS language,
I wanted a place to take notes
and explore new ideas in the open.
How do we write code that is modular & maintainable,
in a language designed to be systematic & contextual?
The Cascade makes CSS unique –
forcing us to revisit
even the most common programming feature: the variable.
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.
Cascade & Inheritance Level 6
defines scoped styles –
allowing authors to provide bounded ranges
for selector-matching,
and give priority to
more ‘proximate’ scope origins.
Cascade & Inheritance Level 5
defines Cascade Layers –
allowing authors to define
explicit contained layers of specificity.
Learn how design engineering
brings together form and function.
From the very start,
“web design” has posed a nearly impossible paradox.
CSS Custom Properties allow
us to manage and control both cascade and inheritance in new ways.
Jina and I answer questions about CSS, Sass, Design Systems, and more!
A spinoff of the Party Corgi Network discord.
I chat with Chris Biscardi about
The CSS Working Group,
open-source projects,
art, and music.
I was invited to join the CSS Working Group
to help develop the next level of
Cascading & Inheritance –
along with Container Queries,
CSS scoping, and more.
“What about building websites has you interested this year?”
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.
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.
Why waste your time on half-measures?
Make your site THE MOST NORMALEST
with this ULTIMATE CSS RESET.
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.
I drop by the show to talk about Sass in 2019,
design tokens, Oddbird, unused CSS, new CSS properties,
and Dave & Chris’ explanation of revert.
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.
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.
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.
The web is designed to work across platforms,
devices, languages, and interfaces –
but how can we possibly design for that
unknown and always-changing canvas?
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.
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.
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?!
Sass recently launched a new module system.
The new syntax will replace @import
with
@use
and @forward
–
a big step forward for making Sass partials
more readable, performant, and safe.
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?
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!
In the CSS naming-convention arms race to lowest specificity,
I’ve decided to only use universal *
selectors.
I call it F*CSS.
We start by talking about
design systems and design tooling –
how they differ,
and the problems they solve.
I’ve been working with Mozilla
to help create a new resource
for web professionals –
with a mix of videos,
articles, demos, and open source tools.
Pushing past the “variable” metaphor,
CSS Custom Properties can provide new ways
to balance context and isolation
in our patterns and components.
Steve Jenkins interviews me
about the state of CSS,
and what’s coming next for the language –
from Intrinsic Design
to Dynamic CSS.
From building beautiful sites
to maintaining complex design systems
across multiple applications,
CSS is the web-language of design.
Thunder Nerds interview me
before her talk at VueConf US 2019.
The panel and the guest talk about grid systems,
fonts, and more!
On Episode 18,
the TalkScript team continues the live-ish at JSConfUS podcast series
with guests Myles Borins, Tim Doherty, and Miriam Suzanne. Listen in!
Don’t let the declarative syntax fool you –
CSS is a powerful and dynamic programming language.
Style Guides & Pattern Libraries are great tools
for documenting the relationships between code and design,
but beautiful docs are only half the battle.
A non-technical guide
for taking your project from concept to launch,
without ever losing sight of the goals.
Inspired by Robin Rendle,
I demonstrate some of my early experiments
combining CSS Grids and custom properties
to create dynamic layouts and data-visualizations.
Sass is the most mature, stable,
and powerful professional grade CSS extension language in the world.
Explore the history of web layout
with the creator of Susy –
why grid systems exist,
how they work,
and practical tips to avoid using them.
Viewport units have been around for several years now,
with near-perfect support in the major browsers,
but I keep finding new and exciting ways to use them.
I thought it would be fun to review the basics,
and then round-up some of my favorite use-cases.
It feels like CSS Grid has been coming for a long time now,
but it just now seems to be reaching a point
where folks are talking more and more about it
and that it’s becoming something we should learning.
It’s been a month
since our country pseudo-elected
a bigoted blow-hard for president.
I’m heading to DC to protest his inauguration in January,
visit friends,
and go on a mixed-media resistance tour…
No matter what acronym drives your selectors
(BEM, OOCSS, SMACSS, ETC),
loops can help keep your patterns more readable and maintainable,
baking them directly into your code.
We’ll take a look at what loops can do,
and how to use them in the major CSS preprocessors.
Miriam Suzanne creates experimental experiences
with her band and her fellow developers.
Blog for people who make websites
Chris Coyier interviews Miriam
when she joins the CSS Tricks team
as a Staff Writer.
We talk about gettting started in the industry,
name confusion,
fouding OddBird,
building Susy,
and more.
In this episode of the Versioning Show,
Tim and David are joined by Miriam Suzanne,
best known for Susy, a responsive layout toolkit for Sass.
They discuss going from being a lurker to finding your voice,
the importance of writing about what you’re learning,
stumbling into fame, approaching new projects, and unit testing in Sass.
Style Guides & Pattern Libraries are great tools
for documenting the relationships between code and design,
but beautiful docs are only half the battle.
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.
Design systems streamline development,
communication, and consistency –
but often rely on dedicated
teams and extended budgets.
A project-manager’s reflections on human-centered problem-solving,
client communication,
and user feedback in agile web development.
Design systems must be
meaningful to both humans and machines
Accoutrement provides Sass design-token management
that improves readability and consistency,
while encouraging automation.
Maps are a powerful data type in Sass –
perfect for managing color and scale palettes,
framework configuration, data storage, and more.
an introduction to the Susy layout toolkit
a case-study in building and sharing open-source Sass
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.
A novel about new love,
moving apart,
and what comes next.
A love story, and an after-love story –
told wiith poetry and pictures.
Susy is a lightweight grid-layout engine for Sass,
designed to simplify and clarify responsive grid layouts
without ever getting in your way.
Originally released in 2009,
Susy has become one of the
most popular layout frameworks on the web.
I co-founded OddBird
with my brothers in 2008
to create scalable,
accessible,
and performant web applications
with a human-centered design.