Sign in

Nathan Knowler

@knowler.dev
1.9K followers 1.1K following 3.3K posts

Building web stuff and design systems. Focused on accessibility, progressive enhancement, and web components. At the intersection of CSS and the Shadow DOM. he/him Métis/settler Treaty 1/wpg knowler.dev sunny.garden/@knowler

PostsRepliesMedia
Nathan Knowler @knowler.dev · 5h
I use arch btw
0131
Nathan Knowler @knowler.dev · 5h
Is that a lack of faith in the tech? Or the situation with Apple/Google stunting the tech changing? Or both?
100
Nathan Knowler @knowler.dev · 19h
falsebody.bandcamp.com/track/grief-...
falsebody.bandcamp.com
Grief, Please Stay, by False Body
from the album Tomorrow Starts Without You
001
Nathan Knowler @knowler.dev · 26/09/2026
They all prefer to hangout at the Nazi bar too.
050
Nathan Knowler @knowler.dev · 25/09/2026
new false body falsebody.bandcamp.com/album/tomorr...
falsebody.bandcamp.com
Tomorrow Starts Without You, by False Body
9 track album
000
Nathan Knowler @knowler.dev · 25/09/2026
Subtle ways humans are being shown the door.
100
Nathan Knowler @knowler.dev · 25/09/2026
Comments are the same. Folks rightly complain about the over-commenting, but… it’s not doing it for us.
100
Nathan Knowler @knowler.dev · 24/09/2026
everytimeidie.bandcamp.com/track/underw...
everytimeidie.bandcamp.com
Underwater Bimbos From Outer Space, by Every Time I Die
from the album Ex Lives
000
Nathan Knowler @knowler.dev · 23/09/2026
Another idea that lets you use range syntax: ```css :root { --tablet: 37.5rem; --desktop: 64rem; --width: 100vw; /* probably need to register this or name the root container */ } @container style(--desktop > --width > --tablet) { p { color: DeepPink; } } ```
081
Nathan Knowler @knowler.dev · 22/09/2026
If you need to update your HTML for class name changes when the viewport resizes, you’ve done something extremely wrong.
030
Nathan Knowler @knowler.dev · 22/09/2026
“Aren’t you creating more runtime cost for CSS?” And you aren’t doing the same in an arguably less optimal way by moving everything into HTML? Sure you can still leverage CSS features, but you have to do so through a bespoke class name microsyntax. Typically, JS ends up driving that.
110
Nathan Knowler @knowler.dev · 22/09/2026
“But what about duplication in built stylesheets?” That’s not an issue CSS mixins will have. For Sass, I’d argue the tradeoff might be worth it.
110
Nathan Knowler @knowler.dev · 22/09/2026
This is why I can’t wait for CSS mixins. They’ll enable the most important feature of Sass: being able to create truly presentational abstractions that can be applied within stylesheets.
140
Nathan Knowler @knowler.dev · 22/09/2026
My biggest gripe with not using Sass is that, sure yes, CSS is pretty capable, but you end up using class names instead of mixins and that shifts where styles are applied from the stylesheet to HTML. Continue to optimize down that path and you end up with something like Tailwind and/or CSS-in-JS.
380
Nathan Knowler @knowler.dev · 22/09/2026
portrayalofguilt.bandcamp.com/track/human-...
portrayalofguilt.bandcamp.com
Human Terror, by portrayal of guilt
from the album …Beginning of the End
010
Nathan Knowler @knowler.dev · 22/09/2026
chatpile.bandcamp.com/track/family...
chatpile.bandcamp.com
Family Funeral, by Chat Pile
from the album Who Loves The Sun
030
Nathan Knowler @knowler.dev · 21/09/2026
no amount of coffee could possibly fix me… but I’ll still try
191
Nathan Knowler @knowler.dev · 21/09/2026
Framing it as the programming language needing justice definitely brushes the actual issue under the rug probably in an attempt to make the link more clickable.
020
Nathan Knowler @knowler.dev · 21/09/2026
ya I agree it definitely matches the culture of programming I’ve observed throughout my career. Programming at large has a toxic masculinity/sexism/homophobia problem and it’s no wonder that fascism is not far off.
010
Nathan Knowler @knowler.dev · 21/09/2026
It’s not a new notion. See: thoughtbot.com/blog/tailwin...
thoughtbot.com
Tailwind and the Femininity of CSS
Why we undervalue front-end expertise in the web development world.
2150
Nathan Knowler @knowler.dev · 20/09/2026
2024-2025 regular season was exciting. Playoffs were a downer (even though there were exciting moments). Then last season between Lowry and Hellebuyck being out… just made it all feel like a write off. Now I feel like the Jets are a bit lost and unlikely to recapture that prior excitement.
000
Nathan Knowler @knowler.dev · 20/09/2026
I can’t say I’m excited for this hockey season. This whole Hellebuyck nonsense is draining.
100
Reposted by Nathan Knowler
Keith Cirkel @keithamus.social · 19/09/2026
I want Custom Attributes to exist - think Custom Elements (Web Components) but Attributes. I've been working on a proposal, specs, and now a polyfill: www.keithcirkel.co.uk/custom-attri... More coming soon!
keithcirkel.co.uk
Custom Attributes polyfill
79723
Nathan Knowler @knowler.dev · 19/09/2026
(and if you didn’t/don‘t read the post, I don’t mean Daniel)
080
Nathan Knowler @knowler.dev · 19/09/2026
nazi devs fuck off.
2629
Nathan Knowler @knowler.dev · 19/09/2026
Some easy wins for them in Interop 2027 I guess.
010
Nathan Knowler @knowler.dev · 19/09/2026
s/east coast/eastern time
000
Nathan Knowler @knowler.dev · 19/09/2026
For those unaware, Winnipeg is just a little west of the longitudinal centre of Canada.
100
Nathan Knowler @knowler.dev · 19/09/2026
It’s just hitting me now how weird it’ll be for Winnipeg to be in the same timezone as like Toronto and the east coast this winter.
100
Reposted by Nathan Knowler
Eric Bailey @ericwbailey.website · 18/09/2026
I have a lot of feelings about the whole CSS-Tricks debacle. Here's me trying to be constructive about it. ericwbailey.website/published/cs...
ericwbailey.website
CSS-Tricks could be a co-op
The web will calcify without voices sharing what they know.
25918
Nathan Knowler @knowler.dev · 18/09/2026
Font weight change is an easy/lazy way to pass any sort of “colour alone” accessibility guideline. (The background contrast here would probably be insufficient to be construed as a separate shape.)
210
Nathan Knowler @knowler.dev · 17/09/2026
Probably my favourite CSS to write.
020
Nathan Knowler @knowler.dev · 17/09/2026
I’ve been eagerly awaiting this. 😅
120
Reposted by Nathan Knowler
Manuel Matuzović @matuzo.at · 17/09/2026
Friends, it's that time of the year: Once again, I'm asking you to help me create another amazing HTMHell Advent Calendar by writing about HTML. The CFP is open until October 3! docs.google.com/forms/d/e/1F...
docs.google.com
HTMHell Advent Calendar
Hello, my dear friends of high-quality markup! We're getting closer to the last quarter of 2026, which means that the HTMHell Advent Calendar is getting closer, too. Last year, once again, you contrib...
34936
Nathan Knowler @knowler.dev · 17/09/2026
Swipe up on it to get to the tabs view. Swipe left on a tab in that view to close it. Some of these actually make using a browser on a phone bearable.
020
Nathan Knowler @knowler.dev · 17/09/2026
I do use it day-to-day for both personal stuff and work, so I’m a big user of the space routing feature and having different essential tabs for different spaces (but also shared between some spaces). I have the occasional website I have to use in another browser, but it mostly works.
010
Nathan Knowler @knowler.dev · 17/09/2026
Custom property?
130
Nathan Knowler @knowler.dev · 16/09/2026
I think the only thing Zen can’t do that Arc can is Little Arc. Otherwise it has feature parity with Arc as far as tab hierarchy/space routing goes.
100
Nathan Knowler @knowler.dev · 16/09/2026
Looks like all of the browsers follow the spec and don’t use the contents for the name. I imagine a visually hidden slot that’s referenced by `this.#internals.ariaLabelledByElements` would make it work (as they seem to ignore the content if it’s not slotted).
000
Nathan Knowler @knowler.dev · 16/09/2026
If it didn’t work you could probably use `ElementInternals.ariaLabelledByElements` assigned the light DOM contents to force it to work.
100
Nathan Knowler @knowler.dev · 16/09/2026
I’m curious if the contents get picked up as the accessible name. I don’t believe they’re spec’d to for ARIA img/image (synonyms — image says it gets it’s name from author which usually means `aria-label`/`aria-labelledby`).
100
Nathan Knowler @knowler.dev · 16/09/2026
@nolanlawson.com has done some measuring in this space I believe.
010
Nathan Knowler @knowler.dev · 16/09/2026
Tagged some (ex-)Adobe folks over on Mastodon. I imagine you’re probably right about the overhead costs, but the benefits from using shadow DOM would come from the ways the browser can optimize (e.g. style invalidation) or just fact that author styles/querySelectors will select less.
220
Nathan Knowler @knowler.dev · 16/09/2026
What particularly are you trying to measure?
120
Nathan Knowler @knowler.dev · 16/09/2026
s/first baseline/first line
010
Nathan Knowler @knowler.dev · 16/09/2026
ya, it’s slightly different. I find design usually asks for it to centred but also aligned with the first baseline. It should work the same with subgrid. The baseline alignment does the heavy lifting, then the vertical adjustment of the icon is just relative to that baseline alignment.
120
Nathan Knowler @knowler.dev · 16/09/2026
This is for a flex layout, but I think the same should apply for grid layout since you’re using baseline alignment if you wanted to make the icons centre with the first line. bsky.app/profile/know...
100
Nathan Knowler @knowler.dev · 16/09/2026
Looks like someone’s made a CSS feature request for a `align-items: first center` which is definitely a lot more clear than `first baseline` for this use case: github.com/w3c/csswg-dr...
github.com
[css-align][css-inline] Support for aligning items to the center of the first line. · Issue #9854 · w3c/csswg-drafts
Spec links: align-items-property Premise: I'm recently finding myself in this situation where I want to align a checkbox or a help icon to the center of the first line of the content. In some cases...
110
Nathan Knowler @knowler.dev · 16/09/2026
Got around to putting together a demo: knowler.dev/demos/d_pDxD... This uses a similar formula for adjusting the icon position. Since it’s already on the baseline, it just needs to figure out half the difference between the icon size and text’s cap size as the positioning offset.
knowler.dev
“Icon centred on first line in flex layout with baseline alignment” demo by Nathan Knowler
100
Nathan Knowler @knowler.dev · 15/09/2026
I usually use baseline alignment (e.g. `align-items: baseline`) for this but it can be tricky to get the icon to play well with that.
130