Debug panel

Close debug panel
Roma’s Unpolished Posts

My 2025 in CSS

Published on:
Categories:
Year in Review 3, CSS 89, Personal 26
Current music:
Every Gentle Air
Under Water, Under Ice
Current drink:
Yunnan tea

Intro

For me, 2025 was a much less productive year than 2024 and 2023. A mix of industry and world frustrations, personal issues, and just certain people being mean — all of that made me live on borrowed spoons for most of the year.

Oh well! I am not sure if I will recover fully in 2026, but I’ll try to do what I can. And it is not like 2025 was without its bright sides.

This post is a roundup of everything I wrote about CSS, so if you missed something — it is a good way to catch up!

My Articles and Techniques

Compared to the six articles I published in 2024, I managed to get out only two new ones — both at the beginning of the year. That said, I really like how both of them ended up, and if you missed them — I recommend finding time and reading them. You will likely need a lot of time — my articles do not become shorter — but, I promise, even beyond their premise, they contain many curiosities that I did not see anyone talk about.

Some of My Blog Posts

I was unable to return to posting bookmarks, so I wrote fewer posts than in 2024. I still managed to do the whole November challenge, where I wrote one post every day for the whole month, making it the third year I completed it. I find this challenge pretty useful, as it allows getting out some of the things I could not find an opportunity to write about otherwise — especially this time, I managed to share many small but impactful things.

Here are some of these posts that I recommend you to read:

  • Future-Proofing Indirect Cyclic Conditions

    May 31. This is a follow-up to my Indirect Cyclic Conditions article that I already mentioned, in which I had to find a way to fix it to work with the changes in the spec and implementation that broke my technique.

  • Functional Capturing

    June 3. This is also a follow-up, now to my Captured Custom Properties post, but now looking at how we could use custom functions in CSS to achieve a similar capturing behavior.

  • Inline Custom Identifiers

    November 3. A post in which I name and share a pattern I used for a few years. I continue using it, and highly recommend look at it if you’re planning to work with scroll-driven animations, anchor positioning, and other newer CSS features that require unique identifiers.

  • Renaming Outer Variables in CSS Functions

    November 4. A post about hidden mini-feature of custom functions. It might not be something very useful in practice, but as we start to experiment with custom functions and mixins more, I believe this will find its use.

  • Zombie Styles

    November 5. A post that names a problem that happens occasionally with CSS, especially when complex build steps are involved.

  • Box-Decoration-Break

    November 6. A post reminding about a not very common CSS property which is yet to become baseline in theory, but which can be already used for many use cases alongside its -webkit- prefixed version.

  • Fixing Baselines

    November 7. This one could’ve been an article on my main site, potentially. While the technique itself is not novel, I did not see many people write about it, and I find it returning to it year over year.

  • Uneven Inline Paddings

    November 10. While I can’t say I am good at design, over the years I gathered a few barely noticeable design tweaks that, I thought, are worthy to be shared. This is one of them.

  • Named Container Presence Check

    November 11. A post about how we can check for the presence of some named containers today, while the corresponding native CSS feature for this is not yet available in all browsers.

  • Responsive tab-size

    November 12. A fun way to use typed arithmetic for making the tab-size property be responsive to some container’s width.

  • Styles For Secondary Interactive Elements

    November 13. Another design tweak, one that I also use for a while, and recommend you to try as well.

  • Whitespace in Code

    November 17. A very short post about a small tip for improving the formatting of your code.

  • Anchoring to a Containing Block

    November 19. A post about one anchor positioning gotcha, where it is not possible to anchor an element to its containing block with absolute positioning, and a workaround that involves fixed positioning and anchor-scope.

  • Scope for Examples

    November 20. A short post about an @scope use case that I expect will be very popular, especially in blogs of those who write about CSS, as it simplifies creating examples for articles a lot!

  • Play With Inherit Function

    November 24. A post about how inherit() function is now available for testing in Chrome Canary. I expect this function to be tremendously useful once it is in all browsers, as it unlocks some of the API designs and ways to write code that were not possible without complex hacks before.

  • Responsive Cyclic Margins

    November 25. A post about a few ways of making some margins or gaps collapsible to zero without compromising the max-content dimension of the element they’re used in.

  • Border: 2px double

    November 26. A tiny “fun fact” about how 2px double borders are rendered. No interop in sight.

  • Bolder Links

    November 28. Last design tweak I shared this year for increasing the contrast of links compared to the body text style.

CSS Working Group

A big part of my involvement with CSSWG this year was thinking about potential standardisation of the “fit to width” technique.

After my 2024’s article Fit-to-Width Text: A New Technique, in April of this year it was resolved to start working on a native CSS feature for it.

There was a lot of valuable feedback from the community, as well as a Google Chrome team’s explainer and experimental implementation, which were followed by more discussions and issues, some of which are still ongoing.

I wrote two blog posts about some of that:

Aside from the above work, I opened a few new CSSWG issues about an array of topics.

Aside from these, I participated in some other issues and discussions, and some of my older issues were resolved in CSSWG meetings.

My Browser Bug Reports

With this year not being as productive, there were not as many opportunities to stumble upon bugs. And, in the same way I had fewer spoons for actual experiments, I was unable to find them to report the issues I encountered.

That said, a fun fact: with fifteen bugs reported, they were distributed equally among all browser engines.

Plans for 2026

Since November, I am actively working on a new proper article for my website. It takes a while, mostly due to the necessity to come up with good examples, but I hope the result will be worth it.

I also have material for another big article, though it will likely need a bit more research.

It becomes harder and harder to find “unsolvable” problems and hack the solutions to them, but hey, you never know what you will stumble upon.

Please share your thoughts about this on Mastodon!