CSS and design systems people - BlogFlockhttps://blogflock.com/list/YqGNJ2026-09-03T19:55:34.000ZBlogFlocksvoisenStylex At Shopify - Adam Argylehttps://nerdy.dev/stylex-at-shopify?utm_source=rss2026-09-03T19:55:34.000ZAdam Argyle<p>Did a deep dive to see if <a href="https://stylexjs.com/">StyleX</a> would work at <a href="https://shopify.com/">Shopify</a>. </p>
<p>Turned out to be <a href="https://x.com/argyleink/status/2095253698431844607">a wash</a>, similar to my other explorations into <a href="https://www.smashingmagazine.com/2011/12/an-introduction-to-object-oriented-css-oocss/">OOCSS</a>.</p>Small things like these - Robin Rendlehttps://robinrendle.com/notes/small-things-like-these/2026-08-23T20:39:41.000ZRobin Rendle<p>Claire Keegan’s novella <em>Small things like these</em> is very sweet and the ending is so triumphant and satisfying and punk rock that it’s going to stay with me for a very long time. I leave this rare book recommendation without a quote or much of a description simply because I don’t want to ruin anything. But what I will spoil is that Keegan’s writing is clear and precise, like ice made in laboratory conditions.</p>
<p>I spotted <a href="https://www.theguardian.com/books/2010/sep/05/claire-keegan-short-story-interview">this interview</a> that captures how she writes:</p>
<blockquote>
<p>“A lot of my work goes into taking any traces of my labours out,” says Keegan, when I talk to her in Edinburgh, a few hours after she gave a reading at the city's book festival. “It's essentially about trusting in the reader's intelligence rather than labouring a point. To work on the level of suggestion is what I aim for in all my writing. There are so many things the short story cannot do; it's by learning those limitations that I am cornered into writing what I can.”</p>
</blockquote>Cybernetics and Ghosts - Robin Rendlehttps://robinrendle.com/notes/cybernetics-and-ghosts/2026-08-23T17:07:06.000ZRobin Rendle<p>In November 1967 Italo Calvino gave a lecture called <em>Cybernetics and Ghosts</em> where he talked about writing machines and the future of literature:</p>
<blockquote>
<p>...will we have a machine capable of replacing the poet and the author? Just as we already have machines that can read [...] will we also have machines capable of conceiving and composing poems and novels?</p>
<p>I am thinking of a writing machine that would bring to the page all those things that we are accustomed to consider as the most jealously guarded attributes of our psychological life, of our daily experience, our unpredictable changes of mood and inner elations, despairs and moments of illumination.</p>
</blockquote>
<p>I didn’t expect Calvino (of all folks!) to be comforted by a machine that could write <em>If on Winter’s Night A Traveler</em>, but ok:</p>
<blockquote>
<p>...what I instinctively feel is a sense of relief, of security. The same sort of relief and sense of security that I feel every time I discover that a mess of vague and indeterminate lines turns out to be a precise geometric form; or every time I succeed in discerning a series of facts, and choices to be made out of a finite number of possibilities, in the otherwise shapeless avalanche of events. Faced with the vertigo of what is countless, unclassifiable, in a state of flux, I feel reassured by what is finite, “discrete,” and reduced to a system.</p>
</blockquote>
<p>So if a computer can take writing, language, and the messiness of putting words together and do that work for us, Calvino believes it might remove all the dark magic out of literature. Or if a machine can process writing into a series of operations like a program then making a novel or a poem won’t be as frightening for us? That’s a weird take that I don’t fully get it, but it’s an interesting idea I guess?</p>
<p>I have to admit that whenever folks start to talk like this I feel this desperate need to defend personhood, humanity, novels, the humanities, liberal arts, books, all of it. My hackles go up reading this stuff because it’s usually coming from folks who don’t know anything about writing or literature and it feels like they’re stomping all over a vulnerable and delicate thing that they don’t understand.</p>
<p>But when Calvino says it we ought to pay attention.</p>
<p>Although, when he finds solace in literature being reduced into a series of rules and regulations, I feel great relief knowing that this is impossible. I love the mystery of novel-making. I want it to be this impossible thing. I hate all the rules and regulations of writing and want to break them in the same way that all great novels do. There are no rules! And that, to me, is liberating, exciting even.</p>
<p>But just as I was about to dismiss Italo as a traitor to the cause—a backstabbing, synth-sympathizer—he does the rather lovely thing that Italo always does. He hops around, tries this idea on for a moment, before jumping out of a closet with an altogether opposite-shaped idea that makes you smile:</p>
<blockquote>
<p>The struggle of literature is in fact a struggle to escape from the confines of language; it stretches out from the utmost limits of what can be said; what stirs literature is the call and attraction of what is not in the dictionary.</p>
</blockquote>
<p>After this 180, Calvino leaves the lecture in an oddly hopeful place by the end. He wants the machine to remove the mystery out of literature, to tell us all the rules and copy all the styles, only so that we can see those rules clearly. Then, Calvino argues, we can study them, break them.</p>
<p>And make something entirely new.</p>WWW Ep251 Guppy Pimpin In Trip Pants While Debugging Ie5 - Adam Argylehttps://nerdy.dev/www-ep251-guppy-pimpin-in-trip-pants-while-debugging-ie5?utm_source=rss2026-08-18T17:24:04.000ZAdam Argyle<img src="https://nerdy.dev/media/www-ep251.jpg" alt="Whiskey web and whatnot episode 251" width="1280" height="720">
<p><span class="Tag">Ep #251</span><br>
<strong>Guppy Pimpin In Trip Pants While Debugging IE5</strong></p>
<p><a href="https://robbiethewagner.dev">Robbie</a> and I do a mostly whatnot episode about our path getting into tech, playing in bands, and getting into trouble. We sip Glen Morangie "A Tale of Ice Cream" and share some stories.</p>
<p>⤷ <a href="https://whiskey.fm/guppy-pimps-tripp-pants-and-debugging-ie5">whiskey.fm</a> · <a href="https://www.youtube.com/watch?v=AmEVXPFeO-w&t=5s">youtube</a> · <a href="https://open.spotify.com/episode/1bCrpSk5tnqGQpkX2oE438">spotify</a> · <a href="https://podcasts.apple.com/us/podcast/guppy-pimps-tripp-pants-and-debugging-ie5/id1552776603?i=1000783374524">apple</a></p>Scotch Malt Whisky Society Member - Adam Argylehttps://nerdy.dev/scotch-malt-whisky-society-member?utm_source=rss2026-08-16T04:38:35.000ZAdam Argyle<p>New member of the <a href="https://smwsa.com/">Scotch Malt Whisky Society</a></p>The day of small things - Robin Rendlehttps://robinrendle.com/notes/the-day-of-small-things/2026-08-15T16:12:06.000ZRobin Rendle<p>I spotted this quote by Shirley Hibberd on the side of an enormous glass case, just outside the departures gate at SFO:</p>
<blockquote>
<p>Let us not despise the day of small things. A windowsill garden is better than no garden, and the dark area where cats quarrel and damp makes patches of unsightly mould, may be made bright with healthy vegetation that shall be worth a little care and very much love.</p>
</blockquote>
<p>This lovely quote is from Shirley’s book, published in 1870, called <em>Rustic Adornments for Homes of Taste</em> and just <a href="https://archive.org/details/rusticadornments00hibb">look at this punk thing</a>. For all the lovely feel-good-vibes and gardening advice of that quote above, it’s clear that this book is a cursed object that beckons from beyond our realm. Although, making a gardening book exclusively for goths like me is kinda neat.</p>
<p>Anyway, Shirley’s quote, the glass case, and the whole exhibit at SFO is called <a href="https://archive.org/details/rusticadornments00hibb/mode/thumb">Indoor Eden: Victorian Jardinières</a> and I feel like it was setup exclusively to ruin my day. The exhibit is a celebration of art nouveau Victorian pottery and I can’t think of much else in life that we should be actively rooting against: stumpy dark green leaves fold over ceramic fish with their mouths wide open; an ugly brown vase stands proud with a few ugly dandelions haphazardly carved into it; a psychedelic, gaping-wound-red butterfly has been stamped onto a tall pot that’s perched on an equally upsetting, even taller pot.</p>
<p>It’s all just profoundly ugly. Overly complicated. Frilly. The colors are wrong. All the pots on display beg for attention in a way that feels embarrassing, reminding me of stuffy rooms in England with silverware locked in cabinets and nice china brought out for special occasions. Or it reminds me of pictures of the Queen printed on tacky plates and all the weird romanticism in England about what the Victorian era was, and what the Empire did. Each piece in these glass cases fail so profoundly and in such remarkable ways that it draws me in, pulls me close. For a while I forget where I am, that I’m at the airport to say goodbye to my father in-law, and instead I’m locked in an eternal death stare with these ugly 150 year old pots.</p>
<p>I know, I know. This meanness is unpleasant and these ugly things are expertly made and technically competent beyond anything I could ever manage with my enormous sausage fingers and terrible hand-eye coordination. A lot of care and attention, decades of experience, was poured into making these objects. But a bad song or a bad movie or a bad anything is still bad, despite the effort made.</p>
<p>Here’s how I excuse myself when being a grump.</p>
<p>When I complain I’m honoring the effort of whoever made these things by trying to understand <em>why</em> I hate them. It’s genuinely interesting to me! A lot of folks dismiss their hatred or are mean about what they dislike in boastful ways but I want to understand why and how these things suck. I want to learn more about them in the hope that I can avoid making anything like it. It’s useful information about myself, like knowing that I’m never going to enjoy karaoke. It’s just too late, okay? I’m thirty six years old and I’ve spent enough time pretending to have a good time singing Shania Twain. It’s ok to hate karaoke! Let me live!</p>
<p>Back at the airport, I chuckle to myself.</p>
<p>Shirley is trying to be nice. In her book and in that quote she’s trying to remind me that great things can come from small problems. That all I have to do is tidy up, clean up a garden, remove a weed, or do small things for the sake of small things. But here I am—a total grump—despising the smallness of these acts. I want to yell at Shirley: no, actually, a windowsill is not better than a garden goddammit. A damp patch in your house is gross and instead of fixing it you should run away, get a new apartment, burn the place to the ground. Small, ugly things should be unacceptable. Fix this minor inconvenience by changing everything about your life and move a thousand miles away, change your name, forget everyone you love, adopt a whole new identity.</p>
<p>And please, for the love of all that his holy in this world, stop making these goddamn Victorian Jardinières.</p>
<p>(<em>Ahem</em>. Sorry, Shirley).</p>Websub - Adam Argylehttps://nerdy.dev/websub?utm_source=rss2026-08-13T06:31:25.000ZAdam Argyle<p><a href="https://en.wikipedia.org/wiki/WebSub">WebSub</a> support added.</p>Creativity On The Internet At Sxsw - Adam Argylehttps://nerdy.dev/creativity-on-the-internet-at-sxsw?utm_source=rss2026-08-13T05:01:20.000ZAdam Argyle<img style="display: none" src="https://nerdy.dev/media/jack-at-sxsw.jpg" alt="Jack Conte at SXSW" height="653" width="1400" />
<p><a href="https://www.youtube.com/@JackConteExtras">Jack (CEO of Patreon)</a> gives a great talk about the struggles of being an artist with the internet from the 90s to today, a history of tech and art, and lessons learned.</p>
<p>Heartfelt insights into working through 2026 "content creation" culture.</p>
<p><a href="https://www.youtube.com/watch?v=17_HcR95YBc">Watch on YouTube</a>. </p>Contextualism At CSSday 2026 - Adam Argylehttps://nerdy.dev/contextualism-at-cssday-2026?utm_source=rss2026-08-12T18:26:00.000ZAdam Argyle<img style="display: none" src="https://nerdy.dev/media/contextualism-at-cssday-2026.jpg" alt="Contextualism title slide from the website" height="500" width="1500" />
<p>Watch my talk <a href="https://conffab.com/presentation/contextualism/?gl=IKgpmf0z8RLu">"Contextualism"</a> from <a href="https://cssday.nl/">CSS Day</a> on <a href="https://conffab.com/">Conffab</a></p>2026 Open Agentic Tools - Adam Argylehttps://nerdy.dev/2026-open-agentic-tools?utm_source=rss2026-08-10T16:52:03.000ZAdam Argyle<p>Some "open" agentic tools:</p>
<ul>
<li><a href="https://openchamber.dev">Open Chamber</a></li>
<li><a href="https://openagents.com">Open Agents</a></li>
<li><a href="https://open-design.ai">Open Design</a></li>
<li><a href="https://open-design.ai/html-video/">Open Design HTML Video</a></li>
</ul>
<p>Wonder if they use <a href="https://open-props.style/">Open Props</a> 😏</p>Scroll Axis Lock - Adam Argylehttps://nerdy.dev/css-scroll-axis-lock?utm_source=rss2026-08-10T16:04:51.000ZAdam Argyle<img style="display: none" src="https://nerdy.dev/media/scroll-axis-lock-hero.jpg" alt="Diagram comparing locked vs unlocked scroll gesture paths" height="781" width="1400" />
<p>I first noticed web scroll areas had scroll locking behavior when making 2D scroll snap demos; I couldn't scroll diagonally without getting hijacked and locked into an <code>x</code> or <code>y</code> axis.</p>
<p>Even on a touch device, where a diagonal gesture is so easy and natural. </p>
<p>
<iframe
class="codepen-embed"
scrolling="no"
title="null"
src="https://codepen.io/argyleink/embed/preview/GRxMPGb?default-tab=result&editable=true&theme-id=43079"
frameborder="no"
loading="lazy"
allowtransparency="true"
allowfullscreen="true"
>
See the Pen <a href="https://codepen.io/argyleink/embed/preview/GRxMPGb"> by Adam Argyle (<a href="https://codepen.io/argyleink">@argyleink</a>)
on <a href="https://codepen.io">CodePen</a>.
</iframe>
</p>
<p>Thanks to <a href="https://www.bram.us/2026/08/09/unlock-immediate-diagonal-scrolling-with-css-scroll-axis-lock-none/">Bramus's rad interactive blog post</a> I saw <strong>Chrome 153</strong> with the remedy:</p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#4263eb">.scroller</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:inherit"> overflow</span><span style="color:#ff1493">:</span><span style="color:inherit"> auto</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:inherit"> overscroll-behavior</span><span style="color:#ff1493">:</span><span style="color:inherit"> contain</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:inherit"> scroll-axis-lock</span><span style="color:#ff1493">:</span><span style="color:inherit"> none</span><span style="color:#030507">; 👈</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<p><a href="https://drafts.csswg.org/css-overflow-5/#scroll-axis-locking">spec</a> | <a href="https://codepen.io/bramus/pen/vEgbwgr">check for support</a></p>
<p><strong>Freedom from the axis lock</strong> 🤘🏻</p>
<h2 id="use-cases">
Use cases
<a name="use-cases" href="#use-cases">#</a>
</h2>
<p>I was thinking: </p>
<ol>
<li>swipe to dismiss interactions</li>
<li>flings</li>
<li>maps or infinite canvas navigating</li>
<li>datagrids or tables</li>
<li>image zoom scrolling around</li>
<li>360 pano images or 3D model panning</li>
<li>data vis exploration</li>
</ol>
<p>Just seems worth while to use the natural inertia, tensions, perf and feels that scroll snap has for the snap feedback of "didnt swipe far enough" and the browser owned easing.</p>
<p>Can also mitigate <code>scrollTo</code> strangeness that might do <code>x</code> then <code>y</code>. </p>
<h2 id="i-did-log-a-bug">
I did log a bug
<a name="i-did-log-a-bug" href="#i-did-log-a-bug">#</a>
</h2>
<p>I saw some performance regressions in the first 2 demo's I pulled up to test with</p>
<ol>
<li><a href="https://codepen.io/argyleink/pen/oNLaBdv">swipe prototype</a></li>
<li><a href="https://codepen.io/argyleink/pen/GRxMPGb">snap matrix</a></li>
</ol>
<p><a href="https://issues.chromium.org/u/1/issues/544635549">Filed a bug</a>. </p>
<p>I wouldn't necessarily file this as perfectly fixed, I still felt it was a bit clumsy or not enabling diagonal scrolling as smoothly as I'd like. </p>
<p><strong>Overall exciting and meaningful IMO tho.</strong> </p>
<p>Your thoughts?</p>Ranting Devigner - Adam Argylehttps://nerdy.dev/ranting-devigner?utm_source=rss2026-08-08T05:46:10.000ZAdam Argyle<img style="display: none" src="https://nerdy.dev/media/argyleink_blogspot.jpg" alt="A wheat paste wall and art post wall used in the background of the ranting devigner blog. This wall is from Pike Place Market in Seattle, WA, famously next to the Bubble Gum Wall. This wall was also used for a Flash website portfolio I built back then too." height="1200" width="1600" />
<p>My <a href="https://blogspot.com">Blogspot</a> in 2011: <a href="http://rantingdevigner.blogspot.com/">Ranting Devigner</a></p>
<ul>
<li>see what <a href="http://rantingdevigner.blogspot.com/2011/03/3-environmental-design-links.html">tech articles</a> I was reading <sup>lol</sup></li>
<li>dev and <a href="http://rantingdevigner.blogspot.com/2011/02/week-6-reading.html">design rants</a> I was making <sup>also lol</sup></li>
</ul>
<p><code>Devigner = Designer + Developer</code><br>
<small>Before "<b>Design Engineer</b>" was coo</small></p>Kevin Powell Trying Out Prop For That - Adam Argylehttps://nerdy.dev/kevin-powell-trying-out-prop-for-that?utm_source=rss2026-08-05T15:11:07.000ZAdam Argyle<img style="display: none" src="https://nerdy.dev/media/kevin-powell-prop-for-that.jpg" alt="some title" height="720" width="1280" />
<p><a href="https://www.youtube.com/kevinpowell">Kevin Powell</a> tries out <a href="https://prop-for-that.netlify.app">Prop For That</a>, makin it look so slick and easy 🫶</p>
<p><a href="https://www.youtube.com/watch?v=fG6ToJJ9x_Y">Watch on YouTube</a></p>Max Value Of A CSS Length Layout Unit - Adam Argylehttps://nerdy.dev/max-value-of-a-css-length-layout-unit?utm_source=rss2026-08-05T14:53:20.000ZAdam Argyle<p><code>33554432px</code></p>
<p>the <a href="https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/platform/geometry/layout_unit.h;l=66;drc=23f5271fa18d22362f3c739c631ef83ac709a1c1">maximum value for a CSS length</a> in a layout context. #randomCSSfacts</p>
<p><cite><a href="https://front-end.social/@bramus/117043307620167329">Bramus on Masto</a></cite></p>WWW Ep250 With Christina Martinez - Adam Argylehttps://nerdy.dev/www-ep250-with-christina-martinez?utm_source=rss2026-08-03T20:55:45.000ZAdam Argyle<img style="display: none" src="https://nerdy.dev/media/www-ep250.jpg" alt="Whiskey web and whatnot episode 250" height="2000" width="2000" />
<p><span class="Tag">Ep #250</span><br>
<strong>Live at React Miami with Christina Martinez</strong></p>
<p><a href="https://robbiethewagner.dev">Robbie</a>, <a href="https://github.com/christina-de-martinez">Christina</a> and I chat fun coding experiments, personifying agents, OpenClaw, hot takes and a little bit of whatnot.</p>
<p>⤷ <a href="https://whiskey.fm/silly-software-sugar-snap-peas-and-coding-in-gen-z-slang-w-christina-martinez">whiskey.fm</a> · <a href="https://www.youtube.com/watch?v=UfUFYnY4u2Y">youtube</a> · <a href="https://open.spotify.com/episode/65Lv5YYJVMiCxYmCrq0Xxv">spotify</a> · <a href="https://podcasts.apple.com/us/podcast/silly-software-sugar-snap-peas-and-coding-in-gen-z/id1552776603?i=1000779321860">apple</a></p>Reading matters deeply - Robin Rendlehttps://robinrendle.com/notes/reading-matters-deeply/2026-08-02T22:23:40.000ZRobin Rendle<p><a href="https://aworkinglibrary.com/writing/reading-matters-deeply">Mandy Brown</a>:</p>
<blockquote>
<p>...reading isn’t about reaching empathic dead ends, or recruiting platitudes about how we must understand each other [...] To reduce reading to the practice of empathy is to divorce it of its real power and pleasure: to enjoy the fruits of another person’s creative effort, to think with the writer and their characters, not becoming them, <em>but becoming more fully yourself</em>.</p>
</blockquote>Show me the work - Robin Rendlehttps://robinrendle.com/notes/show-me-the-work/2026-08-01T18:05:07.000ZRobin Rendle<p>Whenever someone tries to impress me with a job title I feel sorry for them. Like when a child tries to impress me by explaining that “Wolverine is cool.” Look, kid: I basically invented Wolverine. I’ve been thinking about Wolverine since before you were born. Wolverine and me are best buds how dare you come to me with these childish facts. Have you seen my t-shirt? My Wolverine-themed chain wallet? My sick yellow socks? I know everything about Logan — see, we’re on a first name basis here — and he calls me all the time to ask how I’m doing. He was the best man at my wedding. So do I know that Wolverine is cool? Go back to school and get yourself an education.</p>
<p><em>Ahem.</em> Anyway, like I said, I’ve always felt pity for folks with ridiculous job titles but I hadn’t really been able to put this feeling into words until I heard AOC answer a question about running for president in 2028:</p>
<blockquote>
<p>What’s funny about that, they assume that my ambition is positional. They assume that my ambition is a title or a seat, and my ambition is way bigger than that. My ambition is to change this country.</p>
<p>Presidents come and go, senate house seats, elected officials...all come and go. But single payer healthcare is forever.</p>
</blockquote>
<p>I can’t put into words how much I admire this. Although sure, a title might be nice. It might communicate what level you are, or help barter for more money and power. It might get you a better job. But I’d argue that those are the jobs you don’t want. Constantly vying for attention and glory is the best way for the work to suck.</p>
<p>Most fields have figured this out: even the biggest bozo in the world is unlikely to introduce themselves as a Senior Staff Principal Novelist, or a Lead Poet, or an AI-Native Movie Director. But in the software design field there’s a total lack of shame. Someone will shake your hand with the most pathetic, lick-spittle job title in a vain attempt to impress or intimidate, to place themselves above you in a deeply lame, invisible hierarchy.</p>
<p>So let’s get serious here: Wolverine does not introduce himself as an AI-Native Senior Principal X-Boy.</p>
<p>He’s just fucking <em>Wolverine</em>, my dude.</p>CSS Infinity Use Cases - Adam Argylehttps://nerdy.dev/css-infinity-use-cases?utm_source=rss2026-07-25T19:57:08.000ZAdam Argyle<img style="display: none" src="https://nerdy.dev/media/css-infinity-and-beyond.jpg" alt="Buzz light year showing flying with a title showing css infinity and beyond" height="550" width="1500" />
<script type="module">
import "https://cdn.jsdelivr.net/npm/baseline-status";
</script>
<p>CSS <code>infinity</code> (and <code>-infinity</code>!) solve some pretty specific problems elegantly, but can also just be plain fun to use.</p>
<p><baseline-status featureId="calc-constants"></baseline-status></p>
<p><small>Showing support for <code>infinity</code>, <code>-infinity</code>, <code>NaN</code>, <code>pi</code>, and <code>e</code></small></p>
<p>Lets spur creative CSS juices with <code>infinity</code> and follow a couple use cases.</p>
<h2>
Basics and gotchas
<a name="basics-and-gotchas" href="#basics-and-gotchas">#</a>
</h2>
<p><code>infinity</code> and <code>-infinity</code> need to always be wrapped in <code>calc()</code>.</p>
<p> If you want it to represent a dimension, it also needs to be multiplied by a unit like:</p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#4263eb">div</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:inherit"> border-radius</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> calc</span><span style="color:inherit">(infinity </span><span style="color:#ff1493">*</span><span style="color:inherit"> 1</span><span style="color:#ff1493">px</span><span style="color:inherit">)</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:inherit"> z-index</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> calc</span><span style="color:inherit">(infinity)</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<p>Not quite limited to <code>calc()</code> too, you can use it with other <code>calc()</code>-like scenarios like <code>clamp()</code>, <code>min()</code>, <code>max()</code>, etc, which we'll dig into a bit 🤘🏻</p>
<h2>
1. Circles and Pills
<a name="1.-circles-and-pills" href="#1.-circles-and-pills">#</a>
</h2>
<p>Before <code>infinity</code>, I would have used scientific notation like <code>1e9px</code> (which is <code>1000000000px</code>) to create a "big enough" radius for circles and pills at any size. </p>
<p>But with <code>infinity</code>..!?</p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#4263eb">.radius-full</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:inherit"> border-radius</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> calc</span><span style="color:inherit">(infinity </span><span style="color:#ff1493">*</span><span style="color:inherit"> 1</span><span style="color:#ff1493">px</span><span style="color:inherit">)</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<div class="radius-full-example">
<style>
.radius-full-example {
width: 100px;
aspect-ratio: 1;
background: var(--surface-1);
box-shadow: var(--shadow-2);
border-radius: calc(infinity * 1px);
}
</style>
</div>
<div class="pill-example">
<style>
.pill-example {
width: 100px;
aspect-ratio: 3/1;
background: var(--surface-1);
box-shadow: var(--shadow-2);
border-radius: calc(infinity * 1px);
}
</style>
</div>
<h2>
2. Perma-state
<a name="2.-perma-state" href="#2.-perma-state">#</a>
</h2>
<p>Setting duration <code>calc(infinity * 1s)</code> makes an animation/transition so long that it appears to be frozen ⛄️</p>
<p>Hover over those boxes and the duration will be pinned to happen over infinity seconds, sticking the state for the duration of the page's life.</p>
<div class="perma-state-example">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<style>
.perma-state-example {
--size: min(3vi, 3ch);
display: grid;
grid: var(--size) var(--size) var(--size) / auto-flow var(--size);
gap: 5px;
> div {
border: 2px solid var(--surface-1);
transition: background calc(infinity * 1s) ease;
&:hover {
background: var(--surface-1);
transition-duration: .2s;
}
}
}
</style>
<p>I like how the duration of your hover is permanently made visible too. Visible millisecond duration via background color.</p>
<h2>
3. z-index
<a name="3.-z-index" href="#3.-z-index">#</a>
</h2>
<p>Need to beat <code>z-index: 999999999</code> or something? </p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#4263eb">.tippy-top-of-stacking-context</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:inherit"> z-index</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> calc</span><span style="color:inherit">(infinity)</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<p>This will max out at the largest int a browser allows: <code>2147483647</code>. Speaking of that number, you can see it by using counters like this:</p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#4263eb">.css-max-int</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:inherit"> counter-reset</span><span style="color:#ff1493">:</span><span style="color:inherit"> cssInt </span><span style="color:#4263eb">calc</span><span style="color:inherit">(infinity)</span><span style="color:#030507">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#030507"> &</span><span style="color:#ff1493">:</span><span style="color:inherit">:after {</span></span>
<span class="line"><span style="color:inherit"> content: </span><span style="color:#4263eb">counter</span><span style="color:inherit">(cssInt)</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507"> }</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<style>
.css-max-int {
counter-reset: cssInt calc(infinity);
&::after {
font-weight: bold;
content: " " counter(cssInt);
}
}
</style>
<p class="css-max-int">See!</p>
<h2>
4. To infinity and beyond
<a name="4.-to-infinity-and-beyond" href="#4.-to-infinity-and-beyond">#</a>
</h2>
<p>Use <code>calc(infinity * 1px)</code> to remove the floor or ceiling of a clamp.</p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#4263eb">div</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:inherit"> inline-size</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> clamp</span><span style="color:inherit">(</span></span>
<span class="line"><span style="color:#4263eb"> calc</span><span style="color:inherit">(-infinity </span><span style="color:#ff1493">*</span><span style="color:inherit"> 1</span><span style="color:#ff1493">px</span><span style="color:inherit">)</span><span style="color:#be4bdb">,</span><span style="color:#868e96"> /* no floor */</span></span>
<span class="line"><span style="color:inherit"> 100</span><span style="color:#ff1493">%</span><span style="color:#be4bdb">,</span><span style="color:inherit"> </span></span>
<span class="line"><span style="color:#4263eb"> calc</span><span style="color:inherit">(infinity </span><span style="color:#ff1493">*</span><span style="color:inherit"> 1</span><span style="color:#ff1493">px</span><span style="color:inherit">) </span><span style="color:#868e96">/* no ceiling */</span></span>
<span class="line"><span style="color:inherit"> )</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<h2>
5. Freeze view transitions
<a name="5.-freeze-view-transitions" href="#5.-freeze-view-transitions">#</a>
</h2>
<p>Make view transitions never complete. </p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#030507">::view-transition-group(</span><span style="color:#4263eb">*</span><span style="color:#030507">),</span></span>
<span class="line"><span style="color:#030507">::view-transition-old(</span><span style="color:#4263eb">*</span><span style="color:#030507">),</span></span>
<span class="line"><span style="color:#030507">::view-transition-new(</span><span style="color:#4263eb">*</span><span style="color:#030507">) {</span></span>
<span class="line"><span style="color:inherit"> animation-duration</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> calc</span><span style="color:inherit">(infinity </span><span style="color:#ff1493">*</span><span style="color:inherit"> 1</span><span style="color:#ff1493">s</span><span style="color:inherit">)</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<p>The <code>::view-transition</code> tree stays in the devtools DOM, giving you an opportunity to inspect or tweak.</p>
<h2>
6. Bools
<a name="6.-bools" href="#6.-bools">#</a>
</h2>
<p>Clamp an arbitrary number down to exactly 0 or 1, then use it:</p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#4263eb">.flippy</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:#030507"> --active</span><span style="color:#ff1493">:</span><span style="color:inherit"> 0</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507"> --on</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> clamp</span><span style="color:inherit">(0</span><span style="color:#be4bdb">,</span><span style="color:#4263eb"> var</span><span style="color:inherit">(--active) * infinity</span><span style="color:#be4bdb">,</span><span style="color:inherit"> 1)</span><span style="color:#030507">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:inherit"> background</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> hsl</span><span style="color:inherit">(200 80</span><span style="color:#ff1493">%</span><span style="color:#4263eb"> calc</span><span style="color:inherit">(50</span><span style="color:#ff1493">%</span><span style="color:#ff1493"> -</span><span style="color:#4263eb"> var</span><span style="color:inherit">(--on) </span><span style="color:#ff1493">*</span><span style="color:inherit"> 20</span><span style="color:#ff1493">%</span><span style="color:inherit">))</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:inherit"> translate</span><span style="color:#ff1493">:</span><span style="color:inherit"> 0 </span><span style="color:#4263eb">calc</span><span style="color:inherit">(</span><span style="color:#4263eb">var</span><span style="color:inherit">(--on) </span><span style="color:#ff1493">*</span><span style="color:inherit"> -10</span><span style="color:#ff1493">px</span><span style="color:inherit">)</span><span style="color:#030507">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#030507"> &</span><span style="color:#ff1493">:</span><span style="color:inherit">active {</span></span>
<span class="line"><span style="color:inherit"> --active: 1</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507"> }</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<p>One variable now can drive color, offset, opacity, gaps, whatever. </p>
<p>Flip with classes, media queries, etc, anything that can toggle a variable can become the moment a different style choice is made.</p>
<h2>
7. Backdrop
<a name="7.-backdrop" href="#7.-backdrop">#</a>
</h2>
<p>You can use the spread feature of <code>box-shadow</code> to create a <strong>non-interactive</strong> backdrop:</p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#4263eb">.backdrop</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:inherit"> box-shadow</span><span style="color:#ff1493">:</span><span style="color:inherit"> 0 0 0 </span><span style="color:#4263eb">calc</span><span style="color:inherit">(infinity </span><span style="color:#ff1493">*</span><span style="color:inherit"> 1</span><span style="color:#ff1493">px</span><span style="color:inherit">) #0005</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<p>Paint past the "entire viewport".</p>
<h2>
8. Scroll Trigger
<a name="8.-scroll-trigger" href="#8.-scroll-trigger">#</a>
</h2>
<p>Trigger a scroll driven transition in, and never transition out.</p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#4263eb">.nav-title</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:inherit"> timeline-trigger-activation-range-end</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> calc</span><span style="color:inherit">(infinity </span><span style="color:#ff1493">*</span><span style="color:inherit"> 1</span><span style="color:#ff1493">px</span><span style="color:inherit">)</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#4263eb">.product-title</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:inherit"> animation</span><span style="color:#ff1493">:</span><span style="color:inherit"> slide-and-fade 150</span><span style="color:#ff1493">ms</span><span style="color:inherit"> ease both</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:inherit"> animation-trigger</span><span style="color:#ff1493">:</span><span style="color:inherit"> play-forwards play-backwards</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<p>Though you'll see in the demo I use <code>scroll 100%</code> which is a specced way that feels closer to the intent I was going for, in that I wanted the range end to be the end of the scroll area.</p>
<p>Try it:</p>
<p>
<iframe
class="codepen-embed"
scrolling="no"
title="null"
src="https://codepen.io/argyleink/embed/preview/BypVjyj?default-tab=result&editable=true&theme-id=43079"
frameborder="no"
loading="lazy"
allowtransparency="true"
allowfullscreen="true"
>
See the Pen <a href="https://codepen.io/argyleink/embed/preview/BypVjyj"> by Adam Argyle (<a href="https://codepen.io/argyleink">@argyleink</a>)
on <a href="https://codepen.io">CodePen</a>.
</iframe>
</p>
<p>Also, just for funsies to share, here's the scroll driven version of the same navbar effect. Doesn't use infinity, but fun to try and compare scroll-triggered vs scroll-driven animation.</p>
<p>
<iframe
class="codepen-embed"
scrolling="no"
title="null"
src="https://codepen.io/argyleink/embed/preview/zxNaGVK?default-tab=result&editable=true&theme-id=43079"
frameborder="no"
loading="lazy"
allowtransparency="true"
allowfullscreen="true"
>
See the Pen <a href="https://codepen.io/argyleink/embed/preview/zxNaGVK"> by Adam Argyle (<a href="https://codepen.io/argyleink">@argyleink</a>)
on <a href="https://codepen.io">CodePen</a>.
</iframe>
</p>
<h2>
Thats all
<a name="thats-all" href="#thats-all">#</a>
</h2>
<p>Hope you found that interesting! </p>
<p>Comment with your own creative uses of <code>infinity</code>?</p>WWW Ep249 With Joel Hooks - Adam Argylehttps://nerdy.dev/www-ep249-with-joel-hooks?utm_source=rss2026-07-23T19:57:08.000ZAdam Argyle<img style="display: none" src="https://nerdy.dev/media/www-ep249.jpg" alt="Whiskey web and whatnot episode 247" height="2000" width="2000" />
<p><span class="Tag">Ep #249</span><br>
<strong>Live at React Miami with Joel Hooks</strong></p>
<p><a href="https://robbiethewagner.dev">Robbie</a>, <a href="https://joelhooks.com/">Joel</a> and I chat about <a href="https://pi.dev/">Pi</a>, OpenClaw, <a href="https://joelclaw.com/">JoelClaw</a>, YOLO mode, AGI, custom harnesses and a little bit of whatnot.</p>
<p>⤷ <a href="https://whiskey.fm/pi-extensions-yolo-mode-and-building-your-own-personal-claw-w-joel-hooks">whiskey.fm</a> · <a href="https://www.youtube.com/watch?v=WvqcvfGqVPY">youtube</a> · <a href="https://open.spotify.com/episode/0tdY7j7RprBQx2yCCDbllk">spotify</a> · <a href="https://podcasts.apple.com/us/podcast/pi-extensions-yolo-mode-and-building-your-own/id1552776603?i=1000777993502">apple</a></p>100 Ways To Center A Div - Adam Argylehttps://nerdy.dev/100-ways-to-center-a-div?utm_source=rss2026-07-21T02:46:06.000ZAdam Argyle<p><a href="https://css-generators.com/center">100 ways to center a div</a><br>
<cite>by <a href="https://github.com/Afif13/">Temani Afif</a></cite></p>