Grilled Cheese

ExploreLog inSign up

Matthew Morete

@matthewmorete.com

301 Following154 Followers

Building websites in Belfast
He/Him
matthewmorete.com

PostsRepliesMedia
@matthewmorete.comOct 10, 2026, 1:15 PM

Now 40% less CSS for the same result! - Minified CSS - No SVG wrapper, I was wrong, it doesn’t need it - No supports, supporting view-transitions but not mask is rare and they just get no transition - Better png encoding + No MIME type or checksum - Frames reversed when smaller

@webdevs.firefox.comOct 8, 2026, 1:30 PMReposted by @matthewmorete.com

What do you want us to work on in 2027?

Here's a web app where you can rank the Interop proposals you care about, giving us data we can use to prioritise feature development.

interop-rank.fxdx.dev

interop-rank.fxdx.devInterop Feature RankingRank the web platform features you care most about
12
@frontenddogma.comOct 8, 2026, 10:30 PMReposted by @matthewmorete.com

Fallbacks for CSS “progress()”, by @matthewmorete.com (@frontendmasters.com):

https://blog.master.dev/fallbacks-for-css-progress/?ref=frontenddogma.com

#css #functions

@matthewmorete.comOct 8, 2026, 5:29 PM

Shamelessly, heavily inspired by the great @gsap-greensock.bsky.social plugin MorphSVG, which taught me a lot. Had no idea how much shape index would matter till I saw this!
gsap.com/docs/v3/Plugins/MorphSVGPlugin/

And if you find a shape() that won't morph, I'd love to hear about it.

@matthewmorete.comOct 8, 2026, 5:26 PM

CSS can only morph between shape()s with the same number and type of commands, which usually they don't.
So I made a tool to convert them into compatible shapes.

shapemorph.matthewmorete.com

It tries to pick the smoothest arrangement of points, but adjust the shape index to try other variations!

@matthewmorete.comOct 6, 2026, 6:26 PM

An easily accessible browser level dark mode toggle. Let it just overwrite the system preference and we can remove all that code from our sites

@matthewmorete.comOct 5, 2026, 10:15 PM

blades.dev this seems to be an actively maintained fork

@matthewmorete.comOct 2, 2026, 2:51 PM

If you wanna use progress() but the browser support isn't good enough yet, then have I got the blog post for you

@matthewmorete.comSep 30, 2026, 4:30 PM

And ofc ty for you for the shout out, I appreciate it 😄

@matthewmorete.comSep 30, 2026, 4:29 PM

The part I think is particular cool, is the PNG mask is wrapped in an SVG, which lets you apply CSS to it! In this case image-rendering:pixelated, without it the mask would be blurry

@codepen.ioSep 30, 2026, 3:32 PMReposted by @matthewmorete.com

"Pixel Dissolve Mask Generator" by Matthew Morete
codepen.io/editor/matth...

+ a very cool website!
matthewmorete.com

@matthewmorete.comSep 26, 2026, 4:17 PM

I'm maybe an outlier in that if the CSS fallback produces the same result, I just do the fallback. I mostly save @supports for progressive enhancement where I'd do things differently based on if it's available or not. And I'm not a good enough developer to know much about tree shaking 😅

@matthewmorete.comSep 26, 2026, 3:39 PM

I think a lot people would find progress() easier to understand, and progress + the same atan2 fallback has the exact same browser support. Progress() has better support than the division

@matthewmorete.comSep 26, 2026, 3:29 PM

I'm just talking about the breakpoints, not the font-size values. I think the breakpoints should always be written in pixels anyway

@matthewmorete.comSep 26, 2026, 3:28 PM

Writing the division and @support is more code than needed though. We're already creating a fallback for progress. I dont want to create a 3 tier system of supports progress/supports division/everything else, when we could just do 2 tiers and be done

@matthewmorete.comSep 26, 2026, 3:26 PM

We have to work around the browser inconsistencies though? The whole reason we register the values is because the browser will convert them to like units. But since we know what those units will be, px in this case, we can skip registering more than we need too if we are also using pixels.

@matthewmorete.comSep 26, 2026, 3:22 PM

Yeah it does support unit divison but not mixed unit atan2. Where as firefox supports mixed unit atan2 but not unit divison. I think registering non-px values and using atan2 is the least code for a cross browser solution.

@matthewmorete.comSep 26, 2026, 1:40 PM

You can use rem's or whatever else, but you have to register more properties. And I was trying to highlight the simplest fallback for the most common use case in fluid typography

@matthewmorete.comSep 26, 2026, 1:40 PM

For cross-browser support, you can't mix units. Registering 100vw as a <length> forces it into pixels, which makes pixels the required unit.
That's why this demo, that uses rems instead, doesn't work in safari:
codepen.io/editor/matth...

@matthewmorete.comSep 25, 2026, 9:47 PM

Cheers! Just a link to the post with the screenshot would be cool 🙂. Nothing more concrete publish yet

Older posts
Terms of UsePrivacy PolicyCommunity StandardsHelpGet the app

Grilled Cheese is a product of Village Compute

Version devBuilt at: 2026-10-10 01:38:52 EDT