CSS: Weekly Summary (September 15-21, 2025)

Key trends, opinions and insights from personal blogs

This week’s CSS posts felt like a tour of tiny edges. Not the big flashy layout stuff. More like the quiet corners you stub your toe on. Carets that blink just right. Dialogs that close when you tap the shadow and don’t shake the whole page. Footnotes that stop pretending to be a section of your life story. I’d describe them as pocket fixes for daily annoyances—small, but the kind of small that leaks into everything.

The caret stopped being a stick, and that’s not just a cute line

Reading Adrian Roselli on carets, I had that “oh right, we use this all day” moment. The caret is that skinny, blinking line where text shows up. Usually unremarkable, unless it’s not visible, or moves weird, or blinks like a strobe light. To me, it feels like the turn signal of the web: tiny, but if it’s off, everyone’s in danger.

The post digs into a fresh bit of CSS power: customizing the caret. Shape, color, maybe even animation. Not just “make it red.” More like, “make it legible for folks who need thicker lines or higher contrast.” There’s fun in that—branding, flair, personal taste. But the tone is careful. I’d say the point lands: don’t override user preferences just to be cute. Don’t give someone a cursive caret that’s harder to track, or a color that disappears against inputs.

There’s a real accessibility weight here. WCAG isn’t a pick-your-own-adventure. Things like contrast, blink rate, motion—those can trigger problems. The post threads the needle between “this is new and cool” and “please don’t break people’s eyes.” If you’ve ever tried to type in a dim room and lost your cursor like a sock in the dryer, you’ll get why this matters.

What I liked most was the practical voice: ways to try it, patterns to avoid, and pointers that say “test with real settings.” It nudges you to think beyond your design system and into what users already set on their device. Not just the theme, but the accessibility toggles. Makes me wonder: if you’re styling the caret, are you reading prefers-reduced-motion too? You’ll get more of that pragmatic vibe in the original post, so yeah, worth a peek.

Modals that don’t wobble the house and dialogs that close like they should

Scrolling bugs feel like squeaky floorboards. It’s the same house, but you hear it every step. Chris Ferdinandi brought two posts that, to me, fit like a pair: keep the screen steady, and close the dialog when the backdrop is clicked, even when the browser’s not playing along.

First, the wobble: when a modal opens and the page behind it stops scrolling, a vertical scrollbar might disappear. Then layout shifts. You get a jump to the side like someone yanked the tablecloth. The fix here is one of those new CSS goodies: scrollbar-gutter. Think of it like saving a parking spot so your car doesn’t get squeezed out when your friend pulls in. You reserve the scrollbar’s space, even if the bar itself hides. No layout shift. No shimmy.

I’d describe it as a clean fix. It’s native. It’s plain CSS. It’s also clearly a progressive enhancement. Old browsers might shrug and move along; so the advice stays simple: use it where you can, don’t panic where you can’t. The demo in the post shows it in motion, which helps. The kind of thing you’d drop into your starter styles and forget, in a good way.

Then, the dialog dance. Native HTML dialog is finally a real tool, and yet, we’ve still got weird little gaps. One of them: closing the dialog when you click the backdrop. Some browsers have a [closedby] attribute. Some don’t. The trick shared—and credit given to Konnor Rogers—is a bit of CSS pointer-events magic. Adjust the backdrop’s hit behavior so the click outside actually registers, and you can wire it to close. It’s not hacky for the sake of it; it’s more like using the back door when the front door is stuck.

I’d say the pattern is sensible: try the standard, fall back to a slight CSS nudge. Keep the UX consistent so the user isn’t guessing which browser they’re in. There’s a tiny delight to clicking outside a modal and watching it behave like you expect. It’s small. But the small stacks up.

Both posts whisper the same message: don’t let the furniture move when someone sits down. Stabilize the page, stabilize the dialog, and life feels less cranky. If that sounds like your daily dev life, Chris Ferdinandi has the demos to poke at.

CSS to speech: when pseudo-elements start talking, tread lightly

I’ve seen lots of “clever CSS” threads over the years. Icons from pseudo-elements. Counters that assemble little labels. It’s neat until you realize some of that “invisible” CSS content isn’t actually invisible. Screen readers pick it up sometimes. Not always. Different browsers, different readers, and it starts to feel like reading subtitles that flicker.

Sara Soueidan dives into this with the kind of clarity that makes you rethink old habits. The gist: CSS-generated content can end up in the accessible name. Sometimes that helps. More often, it complicates things. Using CSS for meaningful content is asking for trouble. Accessibility isn’t a vibe; it’s a system. And the system here is inconsistent.

To me, it feels like a memo from future-you: skip the cleverness, put real content in HTML. Use CSS for decoration. Hungry for badges, status labels, or instructive hints? Those belong in markup, with the correct roles and properties. Pseudo-elements are fine for purely decorative flourishes. Think: a gentle background ornament, not the word “Required.”

The standout bit is the caution about alt text for CSS-inserted images. That sounds upside down already, right? If the image is meaningful, it shouldn’t be injected via CSS. If it’s decorative, it shouldn’t need alt. The post shows examples and calls out combinations that lead to messy, inconsistent announcements. The advice is plain: don’t try to hack semantics with CSS. It’s not designed for that. Like trying to use a butter knife as a screwdriver—it might work on one loose screw, but please don’t build a house that way.

If any of this feels surprising, or you’ve got a codebase full of content: after pseudo, before pseudo, you know the drill—go read the full post. It untangles not just what happens, but why. I’d say it’s the kind of piece that saves you from questionable PRs a month from now.

Footnotes got a new home: from section to aside

There’s a mild joy in housekeeping work. You move a lamp. The room breathes better. Nicolas Magand writes about changing footnotes from a section to an aside. I smiled a little at that. It’s simple, and yet it’s exactly the right kind of nudge towards semantic clarity.

Footnotes aren’t main content. They’re supporting notes, context, friendly rabbit holes. An aside suits them. I’d describe this as aligning HTML to human expectation. If someone is using assistive tech, or even just scanning, that subtle shift helps. You’re saying: yes, this is important, but it’s not the heart of the matter. It’s the margin note.

The post also nods at keeping the site lightweight and the practice of reading old posts to relearn your own thoughts. That hit home. Writing clarifies thinking, and CSS, funny enough, rewards that. A simpler structure often leads to simpler styles. Cleaner cascade, fewer gotchas, less specificity wrestling. It’s like cleaning out your kitchen drawers; you cook faster when you know where the spatula is.

If you’ve been meaning to tidy your blog’s markup or you’re still wrapping footnotes in something heavier than needed, this is a gentle invitation to simplify. The piece is short, reflective, and might spark a little refactor itch.

A 255-byte web page, because sometimes you don’t need the full pantry

“A 255 byte web page” sounds like a joke until you remember the early web ran on less. It’s 8-Bit Day, and James' Coffee Blog took the challenge: keep each resource at or under 255 bytes. HTML, linked stuff—the lot. Think: a postcard-sized site, not just minimal, but microscopic.

There’s a certain magic in constraints. You end up prioritizing mercilessly. James shares how he squeezed an intro, recent posts list, a favicon, and even a search form into his tiny budget. A little list, a little flair, and yeah, a little compromise. Accessibility comes up. Usability too. How do you signal meaning without your tool bag? How do you code responsibly when you’re counting characters like you’re counting cash at a street market?

To me, it reads like a workout for the craft. You strip back to proportions and gestures. It’s like doodling with a pencil after months of digital painting. You notice where you rely on “just one more” script and “just one more” class. The constraints force you to rethink defaults, the same way a short walk forces you to explore the nearby alley instead of driving across town.

This piece pairs nicely with the other posts this week. Small fixes. Tight focus. Restraint. Also, if you’ve ever argued whether a 15kb icon set is “basically free,” this puts a different number on the table. Leave the page feeling like maybe you could ship something leaner tomorrow. The original post breaks down the bytes in a way that’s both nerdy and charming.

Blogger comment widgets: practical CSS that makes a blog feel alive

Not everything has to be a standard spec or a philosophical debate. Sometimes you just want a list of fresh comments with decent thumbnails that don’t look like they were printed on a potato. İsmail Şevik shared a “Recent Comments” widget recipe for Blogger, with CSS and JavaScript to control layout and profile image quality.

I’d say this is for the folks who actually run into Blogger in the wild. And they do. Plenty of long-lived blogs are still there, and a clean comments module goes a long way. The steps are straightforward: where to place the code, how to style the list, how to avoid blurry avatars, those small touches. It’s the kind of guide that’s probably been written a hundred times, but this one lands because it’s specific and updated for what people care about now.

This also ties back to the accessibility thread: lists of comments need good structure. The post hints at layout and visuals, and if you’re the kind who reads between the lines, you’ll think about focus states, link targets, and readable text. The CSS here is the icing, but you still need a solid cake underneath. And yes, the cake is HTML.

The best blogs breathe through their comments. If you’ve got a quiet corner that needs some life, this might be the light lift you’ve been hunting for.

Shared threads: subtlety, restraint, and staying human in the UI

Let me put these pieces side by side for a second. A caret you can see. A dialog that closes gently. A scrollbar that doesn’t cause a lurch. Footnotes that tidy up. Pseudo-elements that keep their mouths shut when they should. A page that lives within its means. A Blogger widget that respects the little details.

I’d describe the throughline as “use CSS to be a good neighbor.” The kind of changes that nobody brags about in a keynote, but your users notice because the site is kinder. There’s this steady hum of progressive enhancement in here. Use new features like scrollbar-gutter, but don’t depend on them like a crutch. Offer better carets, but don’t yank the wheel away from the user’s system settings. Employ dialog when it helps, and patch the backdrop click in a way that doesn’t punish older browsers.

There’s also a clear boundary drawn around semantics. Sara Soueidan and Nicolas Magand are basically tapping the sign: HTML for meaning, CSS for look. That discipline prevents all sorts of weirdness later. CSS can be charming, but it’s not a substitute for correct markup. It’s seasoning, not the stew.

And then the performance diet: James' Coffee Blog takes it to the extreme as a game, but you feel the tug. Lean pages load faster, cost fewer resources, and stay accessible on more devices. If you grew up on slow connections or you’ve tried loading a heavy site on a train with spotty service, you already know. The web is better when we don’t make it lug around five backpacks.

A closer look at the UX micro-moves, one by one

  • Caret customization is no longer a novelty. It’s a new surface for accessibility. If you apply a custom color, consider high contrast. If you change thickness, check it against various font weights. If you add animation, please, for the love of all, respect prefers-reduced-motion. I’d say, borrow from native defaults and tweak around the edges, not through the middle.
  • Dialog backdrop dismissals belong on the list of expected interactions. When they don’t work, users poke around like the elevator button is broken. The CSS pointer-events move makes it act like a native app. Also, mind focus management while closing. If you dump focus back to nowhere, you’ve traded one problem for another.
  • Scrollbar-gutter is the kind of property you add once and forget, like salting pasta water. But be aware of platforms where scrollbars float or overlay instead of taking space. The property anticipates that. The demos in Chris Ferdinandi’s post clarify which modes are safest.
  • CSS-generated content should be considered decorative by default. If it’s meaningful, it deserves a real DOM node. If it’s decorative, it should be marked in a way assistive tech can ignore. The accessibility matrix across browsers and readers is still a bit of a patchwork quilt—so reducing reliance on those gray areas is just good sense.
  • Footnote semantics are a tidy upgrade. Changing
    to
  • The 255-byte exercise is a playful way to rediscover “content first.” It nudges you to compress the message, not just the file. When you’re counting bytes, you’ll pick text over image, HTML over script, and semantics over flourish. Not every day, but sometimes, that’s exactly the right call.
  • The Blogger comment widget is a reminder that CSS still wins hearts with practical polish: spacing that breathes, avatars that don’t blur, names that read well on small screens. You don’t need tailwind-sized frameworks to ship a thoughtful experience.

A note on constraints and taste

I kept thinking about the way constraints show up in all these posts. Some are harsh, like the 255-byte limit. Others are soft, like accessibility guidelines and user preferences. Either way, they shape taste. They force quieter choices—less flash, more consideration. To me, it feels like learning to cook with seasonal produce. You don’t get strawberries in winter, so you learn to love squash. And you do, eventually.

Styling a caret is fun, until you remember someone needs a thicker line because of visual processing. That extra pixel becomes empathy, not just style. Blocking scroll-jank sounds technical, but the result is a calmer feeling page. Closing a dialog by clicking the backdrop is an accessible affordance in practice—people expect it and use it. It’s the small napkin at the taco stand; cheap, but crucial.

Even the Blogger piece, which could be dismissed as a “widget tutorial,” is a real slice of the web. People keep journaling. They keep gathering in comments. A good comment list is a small hospitality move.

What I’d try next after this week

  • Add scrollbar-gutter to your base styles and test on a few browsers. Give the page a little shake—open a modal, close it—see if it stays steady.
  • Audit dialogs for consistent backdrop dismissal. If you’re relying on [closedby] and it’s not available across your targets, try the CSS pointer-events tweak from Chris Ferdinandi’s note and wire it up carefully.
  • Review any pseudo-element content that conveys meaning. Move it into HTML if it matters. Use CSS for visuals only. If this sounds fuzzy, Sara Soueidan’s examples will clear it up.
  • If your blog has footnotes, peek at the markup. Consider
  • Treat the caret like a first-class input detail. Test custom styles against dark mode, high contrast, and zoomed text. If you’re unsure where to start, Adrian Roselli gives a handrail.
  • Run a silly experiment with tight budgets. Not 255 bytes maybe, but try shipping one page with zero JS for a day. See what breaks and what surprisingly doesn’t. The reflection from James' Coffee Blog might push you over the edge.
  • If you’re on Blogger, give İsmail Şevik’s widget a go. It’s nice when there’s a tidy paste-and-tweak solution waiting.

Tiny detours that still point to CSS

One small tangent kept popping up in my head: we talk about CSS like it’s visual glue, but this week’s posts also frame it as social glue. When you change a caret so it’s visible for a wider group, or you prevent the page from shoving things around, you’re smoothing the path for people. That’s hospitality. It’s the small courtesy of keeping the door from slamming.

Another detour: the semantic edits. Those feel like housekeeping, but they also future-proof design. If someone down the line wants to restyle footnotes, the aside gives them a clean hook. If someone wants to automate a11y checks, having content in HTML instead of CSS is the difference between green flags and ghost bugs.

And the performance bit isn’t just speed. It’s also costs and reach. A 255-byte limit is a game, sure, but the idea—making smaller things where it pays off—feels right in a world where not everyone’s on fiber. Leaner CSS and fewer dependencies keep folks on older phones in the conversation.

The week’s mood, if I had to name it

I’d call it “gentle sharpness.” The posts cut into real problems but with a light hand. Nobody’s yelling “rewrite everything,” and nobody’s shrugging either. It’s that steady craftsman vibe. Sharpen one tool, arrange one drawer, fix one squeak.

  • Adrian Roselli says: make the caret yours, but keep it accessible.
  • Chris Ferdinandi says: stop the layout from jumping, and let dialogs close how people expect.
  • Sara Soueidan says: CSS can whisper into the accessibility tree—don’t let it say the wrong thing.
  • Nicolas Magand says: footnotes belong off to the side, and it feels nicer that way.
  • James' Coffee Blog says: build small, learn big.
  • İsmail Şevik says: here’s how your Blogger comments can look good today.

If any one of those tugs at you, the linked posts are where the specifics live—snippets, demos, screenshots, the whole enchilada.

One last cup before closing the tab

I keep coming back to an everyday metaphor: a good cafe. The chairs don’t wobble, the mugs don’t burn your hands, the barista remembers you like less foam. None of those are headliners, but together, you keep going back. CSS can do that for websites. Not everything is a grid masterpiece. Sometimes it’s just making the caret easy to find, the dialog easy to close, and the scrollbar space predictable.

This week highlighted that attitude. Small, respectful, sometimes playful. You can pick any one of these ideas and drop it into your project by lunch. And if you’re hungry for more, the authors share the nitty-gritty—actual code, compatibility notes, reasons, not just vibes. That’s the good stuff.

Anyway, I’d say give the demos a spin, especially the scrollbar-gutter trick and the dialog backdrop click. Peek at your footnotes. And maybe—just for kicks—try writing a tiny page with half your usual crutches. Like a quick walk around the block. Clears the head.