
--atom: 0.15957s;
via Open Props
--atom: 0.15957s;
via Open Props
I learned you can use %
for chroma!
.percentage-chroma {
color: lch(50% 50% 200);
color: oklch(50% 50% 200);
}
Added 2 examples to my CSS Color Syntax Mega List.
Thinking on ways to solve Picklists
In this GUI Challenge, I show how to use leverage the power of checkbox and radio groups for beautiful and accessible picking UX.
๐๏ธ Bad At CSS Podcast
Jason Lengstorf, David East and I chaotically discuss CSS, container queries, and that pesky clamp()
function ๐.
Thanks to Roman Komarov's fork, I hoped for a CSS only solution to filling a range input's progress style with a gradient.
Steal this minimal code setup for a nice comparison component.
I wrote about CSS prefers-reduced-transparency on developer.chrome.com ๐ค
Checkbox and radio groups have special powers with keyboard and screen reader interactions; leaning into them can lead to some rad UI:
Go ahead, open them up and give it a try!
How do I center this div?
Una and I discuss CSS centering, and all the different ways CSS has your back.
Turns out, there's A LOT of ways to center.
NEW
5 bounce easings added to Open Props!
.box {
animation: drop 1s var(--ease-bounce-2);
}
Thinking on ways to make spoopy Halloween Projections
In this GUI Challenge, I emulate a Halloween projector effect I saw on a wall.
Original Codepen set up a vibrant radial gradient in each corner and adjusts their size so their color crossover created a swirly effect.
The animated version uses @property
to interpolate each radial gradients position and adds a radial gradient size slider, so you can find other swirly moments of your own.
I've got a new post over on developer.chrome.com!
Everything you need to know about
CSS Relative Color Syntax ๐ค
@Container
pattern
โ
nice inline flex layout when there's room in it's Column
container
if not?
โ switch to a nice block layout and center the text
I like the ch
unit for this since I'm wanting to switch based on available reading length for the text ๐ค
Thinking on ways to solve relative color
In this GUI Challenge, I show you how to use CSS RCS (relative color syntax) for lightening, desaturating, opacity, grayscale and more.
oklch(from hotpink calc(l - 20) c h)
hsl(from hotpink h calc(s / 2) l)
hsl(from hotpink h s l / 50%)
hsl(from hotpink h none l)
There might be one or two RCS features you didn't know ๐ค
Bramus explains @scope
on developer.chrome.com and his personal blog with this quick introduction.
@scope (.Card) {
> header,
> footer {
background: hsl(none none none / 20%);
}
}
@scope
is new in Chrome 118
NEW
๐๏ธ Bad At CSS Podcast
David East and I discuss TypeScript; David defends it, and I attack it. I'll probably get mega roasted for this.
tldr;
I love TypeScript, for you.
CSS relative color syntax
NEW
๐๏ธ Bad At CSS Podcast
David East and I have a special guest:
Chris Coyier ๐
Fail safe, reliable, & deeply nestable.
Next up on The CSS Podcastโฆ
Ep #71
Why do I have layout shift?
Was on The CSS Survey's Live Stream Party!
โ
give Sacha and Hui a follow!
โ
sink your teeth into that juicy data
โ
hear predictions and suprises!
Next up on The CSS Podcastโฆ
Ep #70
Why do I have a distorted image?
Had a great vacation!
โ
kids at grandma's
โ
chilled hard w/ my partner
โ
bought a banjo! (always been intimidated)
โ
played a lot of banjo and banjolele
โ
built a CSS demo or twoโฆ
โ play video games
Bad At CSS Podcast
โฎ logo made in the browser
โ
intentionally no font
โ
lack of any styles ๐
โ
looks like you're in devtools
โ
bad layout
โ
bad colors
โ
box around bad is bad
Next up on The CSS Podcastโฆ
Ep #68
Why is it overflowing?
๐๏ธ The Bad At CSS Podcast
David East and I host, and sometimes bring on an occasional guest ๐ค
Thinking on ways to solve Adaptive Typography
In this GUI Challenge,
I show how to use the prefers-contrast
media query to adapt both system and adaptive fonts to match user's contrast preferences.
Contrast is more than just color
Experimental #CSS carousel featuring:
subgrid scroll driven animations (SDA) oklch() @property @layer
Lots of code comments
to help break down the effects ๐ค
โ
SDA changes hue/theme
โ
SDA toggles next/prev
โ
SDA syncs dots
Try it in Canary with #experiments enabled
New season of The CSS Podcast has begun!
Ep #67
Why isn't z-index working?
Was on JS Party!
๐๏ธ Watch it (or listen)
Thinking on ways to solve a Morphing Button
In this GUI Challenge,
I show how view transitions can upgrade the experience of changing the innerHTML
of a button by animating the change.
Was on the @coderyan show!
Do not take the State of CSS Survey
"Nice Adam" wants you to take it;
naturally I want the opposite
Scroll snap handles the scrolling stop points, SDA handles the animations and scrollend provides the event needed to trigger it all.
Spoke at Figma Config with Una!
The Future of Responsive Design
All about how the width of the viewport was never that relevant, it's more about the space a component has, the children type and count, and so much more.
Was on the Cloudinary DevJams Podcast!
๐๏ธ Watch it (or listen)
We chat about making the nerdy.dev site with Deno and Fresh, and of course we chat all about how I'm serving images ๐
Vertical rhythm thanks to the rlh
unit.
Bonus:
scales with the user's font size pref ๐
Long live the indie web ๐ค๐ป๐
I've been unleashed.
What evil will I do first?
Perhaps, I'll change one char somewhere..
and break the build.
muahahahaHAHAHAAAAA
Co-MC'ed CSS Day 2023 with Michelle Barker ๐ค๐ป๐
catch up on all the talks here
What a blast, totally was with my people. I'm especially proud of a few dad jokes:
<popover>
and have a <dialog>
with me"Spoke at Smashing Conf!
How to create personalized web experiences
I spoke at Google IO again!
Here's a link to my talk.
Upcoming talks!
Currently in beta, this tool empowers designers and developers with tooling for the latest syntax and features of CSS gradients and wide gamut colors.
Two conic gradients, Open Props beta okLCH prop pack and a hue slider.
Thinking on ways to do 3D SciFi Text
In this GUI Challenge, I use CSS Scroll Linked Animations to 3D tilt a few paragraphs of text, and on scroll, make them appear to vanish into the far edges of the galaxy.
Google IO talk done!
Success selfie at the ๐ Seattle office's Neon Staircase ๐ค๐ป๐
Multiple hard stops in a radial gradient sized as farthest-corner
, this is me changing the x
position first from 0
to -100
, then the y
in the same manor.
Viewport widths n' color gamuts;
As each widen, adapt the UI.
.classic-gradient {
background-image:
linear-gradient(45deg,
white,
black 0% 20%,
white 0% 40%,
black 0% 60%,
white 0% 80%,
black 0% 100%
)
;
}
๐ post on developer.chrome.com
wrap your head aroundโฆ
#CSS text-wrap: balance
โจ balanced headlines โจ
with one magical line of CSS
only Chrome Canary atm, details in article
360 palettes for the price of one.
Was on the @PodRocketPod!
Me, Stephanie Eckles, and Stacy Kvernmo team up and answer questions about UI and UX.
๐ถ Listen on Spotify
#VisBug won an award ๐คฏ
Chrome Web Store
Favorite of 2022
This award is legit! Heavy, clever and minimal. Truly a trophy I'll keep around for a long time!
Thanks everyone for the support!
๐ post on web.dev
6 CSS snippets every front-end developer should know in 2023
Toolbelt worthy, powerful, and stable CSS you can use today.
Radio groups naturally have cyclical roving tab index, but, I put them into a circle and now it really looks cyclical hehe.
Thinking on ways to solve Switch Groups
In this GUI Challenge, I show how to take a fieldset packed with a radio group, and turn it into a switch group that controls text alignment.
Relative color syntax is a better way, but still fun to know this trick.
New post on DCC about CSS Nesting
hehe
Deno & Fresh have been rad.
Same goes for Deploy.
butโฆ
95% of the issues have been deps.
I have deps on NPM, deno.land, esm.sh, and unpkgโฆ if any of these services hiccup, and I try and build; builds fail.
No single service can serve all the modules I need, and I don't need that many
๐ฉ๐
An alternative solution for nested border radius that clips the content-box.
I'm fallin behind getting my hands on some #CSS stuff!โฆ Src of my FOMO:
Hella powerful stuff there that I really don't want to let get away from me.
Quick example of how to make that striped mask on the bottom of the circle gradient.
afk.
Recreate an indeterminate spinner from Spotify, building off a tip from last week ๐ค๐ป๐
37 today. Maybe I'll upgrade this 2011 Mac Air.
This felt like a future of library customization, using @layer
:
/* <tool-tip> styles */
@import "tool-tip.css" layer(components.tooltip);
/* later, in some-new-context.css */
@layer components.tooltip {
.some-new-context tool-tip {
--_bg: var(--surface-1);
--_shadow-alpha: 15%;
}
}
Scope the import, then append tweaks into that scope from anywhere. Safe and sound.
Rad stuff.
Two gradients, one's a mask and the other is the angle / completion.
Gettin the wiggles out before bedtime;
kids night club style.
Complimenting half leading with the lh unit on inline padding
Math color palettes = letter spacing
Optical color palettes = kerning
With relative color syntax and the color-contrast() function, we can achieve a robust and dynamic overlay effect.
Meet the new web color spaces!
It's the article I wish I had when learning about CSS color updates.
I chose clip-path and skew(), what do you choose?
CSS color tip!
Need a rainbow gradient? Let <hue-interpolation>
do the work.
.vibrant-rainbow {
background: linear-gradient(
to right
in hsl /* vibrant gradient HSL colorspace */
longer hue, /* hue-interpolation set to longer */
red, red /* now red to red goes all the way around */
);
}
CSS color-mix()
I've got a new post on Chrome Developers with everything you need to know.
๐ Check it out!
TcsS - Typed Cascade Style Sheets
Why hasn't this been made yet? CSS has all the type information needed to create a comparable experience to TypeScript.
Tokens, house props, adaptive props, pseudo-private props, partial props, mixin props, swappy props, style query props, meta lang props and typed props. Oh my!
Delete your timeout functions and shake off their bugs, here's the event you really need: scrollend
.
Read all about it on Chrome Developers and checkout the polyfill I wrote on NPM.
Proud to share I'll be MCing CSS Day 2023 with Michelle Barker.
A 2023 take at an adaptive CSS logo, thing.
Service worker update:
Let me know if anything has broken!
2023 prediction:
libraries move to or build upon Deno instead of Node.
With view transitions, even replacing text can become a custom animation.
Art with the kids ๐ค๐
This brings us to a total of 54 CSS length units.
Thoughts on arrays in JS and selectors in CSS
Read about the tech behind this new site and all the APIs I'm playing around with?
Tell the browser to take a different route when building gradient steps.
I find this so much more readable.
@media (width <= 720px) {}
Caniuse says we're waitin on Safari to bring it from TechP to Stable; aka plugin still required ๐ญ
Thinking on ways to do UI Physics
In this GUI Challenge, I use requestAnimationFrame and custom properties to make bouncy and jelloey springy UI effects.
Individual transforms are rad.
when you don't need to manage the order
Things CSS Could Still Use Heading Into 2023
Just a couple of ideas!
Chris Coyier
Missing text-wrap
tho!
h1, h2, h3 {
text-wrap: balance;
}
Name an anchor, position stuff to it.
html:has(.CertainItem:focus-visible) {
scroll-snap-type: y mandatory;
scroll-padding-block-start: 100px;
}
.CertainItem:focus-visible {
scroll-snap-align: start;
}
On demand with :has()
,
when a certain item is focused..
snap dat item into a nice position.
Logical Properties
Learn once, works everywhere.
MDN ยท Learn CSS ยท web.dev ยท The CSS Podcast
Domain's moved ๐
Soft launch of nerdy.dev successful ๐ค๐
Still more work. Expect change!
Need a dropcap?
Try the lh
unit ๐ค
::first-of-type::first-letter {
line-height: 1;
font-size: 3lh;
float: start;
}
In ~1 minute you can have FLIP-like animation on your page with View Transitions.
document.startViewTransition(() => {
// modify the dom
// - hide stuff
// - move stuff
// - whatever!
})
Game changer.
layouts are loops.
I didn't have any expectations going into this, but sure came out feeling proud: The CSS Podcast, Open Props, Learn CSS, Nesting.. all toppin the charts ๐
5 years at Google ๐
a design tool is like a workspace with pre-squeezed paints ready. bummer is.. many artists have a preference in their paint and ink brands.
soon web browsers will offer the choice, will graphic design tools?
Lightness != Luminance
Grid and
Subgrid
layout slots
with named areas are rad ๐ค๐
Placing things by name like search, tab bar, and home bar can be sweet.
Try it
(experiment in Canary, Safari Tech Preview or Firefox)
use :has()
for when an element doesn't have some other element as a child, like a card without a heading ๐ค
.card {
...
&:not(:has(h3)) {
/* .card's without h3's */
}
}
DevTools You Didn't Know Existed
The daily.dev show.
End of Season 3 of the CSS Podcast:
YouTube | Podcast!
Had a blast, CSS is so rad โค๏ธ
a rad #CSS one-liner for your hot topics
@layer demo {
h1 {
text-emphasis-style: "๐ฅ";
}
}
Thinking on ways to solve card stacks
In this GUI Challenge,
I
animate a stack of cards using transform origin
,
grid
and
:has()
.
Subgrid
Una and I discuss subgrid, a special value for grid-template-rows
or grid-template-columns
. Learn the basic, use cases, tips, tricks and gotchas.
Oh Snap!
Spoke at CSS Cafe. Watch on YouTube, Peep the slides.
Announcing Chrometober!
Just like Designcember but hauntd! Checkout the blog post Building Chrometober by Jhey for lots of great details about the process.
Made my first commit
to the HTML Spec for the
scrollend
event.
Thinking on ways to solve transitions ๐งโโ๏ธ
In this haunted GUI Challenge,
I live
code CSS clip-path
transitions, demo some rad effects, and cover gotchas. If you don't know clip-path
, you will by the end.
State of CSS Frameworks
Oh snap!
Spoke at An Event Apart in Denver on all the magical things you can do with CSS scroll-snap!
Thinking on ways to solve tooltips
In this GUI Challenge,
I
build a <tool-tip>
custom element with
:has()
,
transforms,
and logical properties.
Besides a small backup script for :has()
, it's all CSS powered.
Thinking on ways to solve the cafe wall illusion
In this GUI Challenge, I recreate a classic illusion with CSS.
On the Learn with Jason show!
Jason and I bring a NextJS app to life with Open Props. Even get to do a little animation ๐
Thinking on ways to solve carousels
In this GUI Challenge, I try and make an accessible, responsive, adaptive and decently full featured carousel.
Spoke at the super rad CSS Day in Amsterdam on CSS Scroll Snap.
Watch the video, peep the slides
State of CSS 2022
Spoke for a Google IO video and wrote an accompanying mega blog post.
A single use custom element.
Was on @KendoUI's React Wednesdays, chattin about Open Props.
Announcing Designcember!
We on the Chrome Team use the site as a place to both test new web features all combined together, but also to showcase content from our team and others around the web.
Checkout the blog post Building Designcember for lots of juicy details.
Swyx and I chat DX vs UX, complexity cliffs in UI, and a little about design.
Announcing open-props.style
350 โจfreeโจ CSS variables
UX/UI Designers are forced to design in px, in a world where accessibility is a legal requirement Christine Vallaure
Why designers should move from px to rem (and how to do that in Figma)
CSS Nesting for the W3C!
Billion Laughs Attack
aka: XML bomb ๐ฃ
A type of DoS attack aimed at XML parsers that with a few liens of code, aims to consume a ton of memory.
:root {
--ha1: lol;
--ha2: var(--ha1) var(--ha1) var(--ha1);
--ha3: var(--ha2) var(--ha2) var(--ha2);
--ha4: var(--ha3) var(--ha3) var(--ha3);
--ha5: var(--ha4) var(--ha4) var(--ha4);
...
}
#CSS was a victim of this when custom properties were introduced.
Learn more on Wikipedia or the CSS Variables Spec.
I join Kevin Powell on Twitch to talk about my favorite up-and-coming CSS features.
CSS scroll-linked animations with Kevin Powell!
HD CSS Color
Spoke again at CSS Camp! This time on HD color, explore what we can use today and how to prepare for the future. Checkout the slides.
Color Gamuts of 2021
Spoke at CSS Cafe. Watch on YouTube, Peep the slides.
Google IO 2021
Gave a workshop on building a user-adaptive interface. CSS grid, flexbox, media queries, and much more.
Jecelyn and I show some of the ways Chrome DevTools supports designers.
What's New In CSS
Great Developer Tools
Spoke to the Stripe DX team in Seattle at their summit where I shared learnings from working with Chrome DevTools teams and creating VisBug. View the slides.
Announcing conic.style
Grab n' go beautiful and unique
conic-gradient
s.
What's New in 2020
Spoke online for London CSS, rapid fire CSS goodies like proposals, drafts, specs, tools & more. Check out the slides.
Announcing transition.style
Grab n' go (dont even need the lib)
clip-path
animations
Made my first commit to a CSS Spec.
I join David Khourshid and Stephen Shaw on The Keyframers!
Kayce and I answer some DevTools questions ๐
Corner at View Source Conf in Amsterdam
Chatted VisBug with Stefan Judis ๐ค๐
Released Slyd!
<slyds>
<slyd>
<h1>Slide 1</h1>
<h2>subtitle</h2>
</slyd>
...
</slyds>
Scroll snap powered, parallax featured, bi-directional slide framework.
Deceiving For Good
Spoke at Seattle Interactive Conf about using UX knowledge for good. See the slides.
Spoke at CSS Camp on how to slow the pace down in an app for anxiety free, frictionless UX.
Spoke at JS Camp on how to leverage PWA features to build realistic prototypes.
Both talks were in the beautiful city of Barcelona โค๏ธ
MPJ(funfunfunction) and I chat CSS Grid.
Rick Viscomi and I chat about the role of design systems in modern web development and how they can change the dynamics between designer and developer.
VisBug was made open source! Plus an interactive tutorial website that looks like a bunch of artboards that need fixed.
Watch the announcement at Chrome Dev Summit 2018.
Released Kung Fury! A syntax highlight theme.
Released blingbling.js!
import $ from 'blingblingjs'
Micro-library of shorthands for DOM selection, events, and attribute manipulation in a super minimal ES module.
Released roving-ux.js!
import { rovingIndex } from 'roving-ux'
rovingIndex({
element: document.querySelector('#carousel')
})
User's shouldn't need to tab through each item in a list to see the next list
I made a cameo in the keynote at Chrome Dev Summit 2018! Had a blast.. moment of a life time ๐ฅ
I wore this shirt from TeeJungle, it was a thing.
Released ragrid.css!
<section grid="columns" vertically-aligned="bottom">โฆ</section>
Works like auto-layout:
An intrinsic first, minimal set of layout attributes.
Spoke at TEDx, Tacoma: Embrace UI.
โ
Slides built with Node and sockets for palm held slide swipeys.
tldr; Embrace UI because it's all around you, and when it's working right it's helping you be more human.
Spoke at HTML5 DevConf in San Francisco about the cross platform (Android, iOS, Windows Phone) hybrid web app Lively.
๐ Taught at Art Institute of Seattle:
Recorded my first set of tutorial videos. They were on #HTML5 for Intel's Developer Zone.
Gave my first front-end talk at an Adobe CreateNOW event in Seattle.