Sign in

Matthew Morete

@matthewmorete.com
150 followers 301 following 126 posts

Building websites in Belfast He/Him matthewmorete.com

PostsRepliesMedia
Matthew Morete @matthewmorete.com · 10h
And ofc ty for you for the shout out, I appreciate it 😄
010
Matthew Morete @matthewmorete.com · 10h
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
111
Reposted by Matthew Morete
CodePen @codepen.io · 11h
"Pixel Dissolve Mask Generator" by Matthew Morete codepen.io/editor/matth... + a very cool website! matthewmorete.com
1102
Matthew Morete @matthewmorete.com · 26/09/2026
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 😅
020
Matthew Morete @matthewmorete.com · 26/09/2026
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
110
Matthew Morete @matthewmorete.com · 26/09/2026
I'm just talking about the breakpoints, not the font-size values. I think the breakpoints should always be written in pixels anyway
000
Matthew Morete @matthewmorete.com · 26/09/2026
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
100
Matthew Morete @matthewmorete.com · 26/09/2026
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.
100
Matthew Morete @matthewmorete.com · 26/09/2026
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.
100
Matthew Morete @matthewmorete.com · 26/09/2026
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
111
Matthew Morete @matthewmorete.com · 26/09/2026
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...
codepen.io
Progress
A code demo by Matthew Morete created on CodePen
310
Matthew Morete @matthewmorete.com · 25/09/2026
Cheers! Just a link to the post with the screenshot would be cool 🙂. Nothing more concrete publish yet
130
Matthew Morete @matthewmorete.com · 25/09/2026
This conversation inspired me to write a bit more about polyfilling/fallbacks for progress(). If your breakpoints are in pixels, which they usually are, all you need is this! Not a nice as progress() but a lot better than I proposing in my previous article. Only 1 @property and 1 tan(atan2())
CSS code: @property --vw { syntax: "<length>"; inherits: true; initial-value: 100vw; } :root { --progress: clamp(0, tan(atan2(var(--vw) - 300px, 1200px - 300px)), 1); }
261
Matthew Morete @matthewmorete.com · 25/09/2026
Thank you! And you're so right that it's much easier to use. I've just a real fondness for the atan2 trick, and calculating progress is a great use for it since it also does the division: clamp(0,tan(atan2(var(--_vp-offset),var(--vp-span))),1); Not a lean as progress, but I think it's still elegant!
120
Matthew Morete @matthewmorete.com · 24/09/2026
I wish we had gotten unclamped first just cause of how easy it is to clamp it. But I guess that's only a problem in the here and now, and in a years time I'll be glad the most common use is the easiest
010
Matthew Morete @matthewmorete.com · 24/09/2026
It's nice to have but I don't think it's going to be anything game changing, cause you can already do it yourself in a lot of cases: (current - start) / (end - start). It'll probably seem more useful when we get calc-mix() and other -mix functions where we can do some fancy things without any maths
200
Matthew Morete @matthewmorete.com · 21/09/2026
Can we get a grip
250
Reposted by Matthew Morete
Jane Ori 💚 CSS Runner 👩‍💻 @janeori.propjockey.io · 19/09/2026
Staff Software Engineer, great with: SQL, Node, Accessibility, Web Assembly, CSS, React, 3D Experience with: Firebase, PHP, Python, C, C#, C++, Java, Native Wii Homebrew Known for: CSS hacking & inventions, tech writing, (offline) game hacking, and many published OS packages
0146
Matthew Morete @matthewmorete.com · 19/09/2026
A pixel dissolve generator! codepen.io/editor/matth... I've tried to make this effect 10 different ways at this point and it usually requires a mountain of code. An encoded PNG, wrapped in an encoded SVG with 'image-rendering:pixelated' is a very fun CSS trick and way way more compact.
codepen.io
Pixel Dissolve Mask Generator
A code demo by Matthew Morete created on CodePen
071
Matthew Morete @matthewmorete.com · 19/09/2026
codepen.io/editor/matth...
000
Matthew Morete @matthewmorete.com · 19/09/2026
All the corner-shape variations made with shape(). Hopefully not something we'll ever need in practise, cause it's way more code (and doesn't include nice features like automatic clamping), but fun to play about with
codepen.io
Corner-shapes with shape()
A code demo by Matthew Morete created on CodePen
020
Matthew Morete @matthewmorete.com · 16/09/2026
oooh yes please, I just saw @ishadeed.com say 'a simple thing should be straightforward to make' and I wondered what that would look like in this case, and it's exactly this
010
Matthew Morete @matthewmorete.com · 16/09/2026
Especially considering you easily pass down child-count to get sibling-count, it's a little annoying we didn't get it first
010
Matthew Morete @matthewmorete.com · 15/09/2026
Was playing around yesterday and ended up using it: codepen.io/editor/matth... I imagine it'll get a lot of use in styling APIs converting meaningful values to 0-1
codepen.io
Variable 'font'/letter with shape()
A code demo by Matthew Morete created on CodePen
010
Matthew Morete @matthewmorete.com · 14/09/2026
aww that really sucks! It was exciting to see yous doing such good work over there
210
Matthew Morete @matthewmorete.com · 12/09/2026
@codepen.io I greatly appreciate the pick, but pick this one instead! It's better!
000
Matthew Morete @matthewmorete.com · 12/09/2026
codepen.io/editor/matth... A small upgrade to use shape() so you can spell a full word with a single element! --letters: var(--w),var(--o),var(--r),var(--l),var(--d); --count: 5; Obviously thats a very clunky API but it's a fun wee experiment
codepen.io
Clip Path Pixel Font (Shape)
A code demo by Matthew Morete created on CodePen
100
Matthew Morete @matthewmorete.com · 12/09/2026
A pixel font with clip-path on @codepen.io codepen.io/editor/matth...
codepen.io
Clip Path Pixel Font
A code demo by Matthew Morete created on CodePen
030
Matthew Morete @matthewmorete.com · 09/09/2026
Thank god
021
Matthew Morete @matthewmorete.com · 09/09/2026
For sure, seems like CSS-Tricks is in good hands again and now Chris is making FrontendMasters an equally great blog
000
Matthew Morete @matthewmorete.com · 09/09/2026
Is that was happened to CSS tricks? I thought it was just an effect of bringing Geoff Graham back
210
Reposted by Matthew Morete
Jakob E @jakob-e.bsky.social · 08/09/2026
Great news 🤩 For anyone interested in how to use progress in fluid typography @matthewmorete.com made an excellent post about it here 👇 blog.master.dev/fluid-typogr...
blog.master.dev
Fluid Typography with progress()
With the `progress()` function in CSS we've got a new way to calculate the size for type based on the viewport without problems of the past.
0106
Matthew Morete @matthewmorete.com · 08/09/2026
Thanks Joost!
010
Matthew Morete @matthewmorete.com · 08/09/2026
I was tired of having to remember how to calculate measurements for flat-bottom bags. Ive seen calculators for more complicated pouches, but couldnt find a simple calculator just for bottom boxed corners, so I like any good developer with a hobby I built one. boxedbottompattern.netlify.app #sewing
boxedbottompattern.netlify.app
Boxed-Bottom Pattern Generator
Generate custom cutting plans and corner notches for any flat-bottom bag, pouch, or fabric container.
110
Matthew Morete @matthewmorete.com · 31/08/2026
I literally just yesterday finished making a very similar thing: emoji-favicons.matthewmorete.com Based of your article from 5/6 years ago on CSS tricks. Subdomains for the win, a wee one page thing isn't worth another yearly bill
emoji-favicons.matthewmorete.com
Emoji Favicons
Easy favicons with emojis and SVG filters.
000
Matthew Morete @matthewmorete.com · 30/08/2026
Im stupid but well meaning. What is twoslash?
100
Matthew Morete @matthewmorete.com · 30/08/2026
very fair I was just checking! I thought maybe we were disavowing all data urls so just wanted to share my fav usage
110
Matthew Morete @matthewmorete.com · 29/08/2026
This is how I find out your name is Ashley and not just ash, spoilers
100
Matthew Morete @matthewmorete.com · 29/08/2026
100%, there's so much transphobia/homophobia targeted at decent people that a single second spent defending a bigot is a second that could be better spent
010
Matthew Morete @matthewmorete.com · 29/08/2026
So cool @preethisam.bsky.social killing it as per usual
000
Matthew Morete @matthewmorete.com · 29/08/2026
This comparison completely sells it, it looks beaut pixelated. Shame it required so much effort compared to if 'image-rendering:pixelated' worked how you'd hope here, though I guess in 99% of uses, vectors staying vector is better
020
Matthew Morete @matthewmorete.com · 29/08/2026
Would this count? css-tricks.com/emoji-as-a-f... It's nice to have it as a one liner rather than dealing with an extra file! Supported almost everywhere that matters except on google search results I think
css-tricks.com
How To Use an Emoji as a Favicon Easily | CSS-Tricks
With just a simple one-liner of code you can use any emoji as a favicon of your website. 😃
120
Matthew Morete @matthewmorete.com · 29/08/2026
Yes totally that all makes perfect sense. In general I weigh clutter vs browser support on a case by case basis. inset: 0 vs 4 properties is such a big win that I'll always choose it, 1 property vs 1 more verbose property with better browser support usually makes me lean towards the better support
000
Matthew Morete @matthewmorete.com · 29/08/2026
Probably the last shape tool for my collection: Minify Shape. It’s very much inspired by SVGO, trying to do the same kind of cleanup and optimisation but for CSS shapes. minifyshape.matthewmorete.com Tested it with every shape I can get my hands on but would love to hear if you find any issues!
minifyshape.matthewmorete.com
CSS Shape() Minifier
Optimise and minify shape() functions without impacting rendering
160
Matthew Morete @matthewmorete.com · 29/08/2026
Do not agree, I don't see any other journalist out here covering digital privacy and fighting censorship like she does
020
Matthew Morete @matthewmorete.com · 29/08/2026
I'm still a transform over individual transforms person. I'll change it when it gets in the way but otherwise I always go for the older properties
100
Matthew Morete @matthewmorete.com · 27/08/2026
TIL: 'border-radius: 6px 999px 999px 6px' becomes '0px 999px 999px 0px' in most cases. 'When the sum of any two adjacent border radii exceeds the size of the border box, UAs must proportionally reduce the used values of all border radii until none of them overlap.'
010
Matthew Morete @matthewmorete.com · 25/08/2026
010
Matthew Morete @matthewmorete.com · 25/08/2026
Such a good article as per usual, TIL about flex-line-count
110
Matthew Morete @matthewmorete.com · 25/08/2026
Some of my other tools would spit out extremely ugly calcs that I didn't want to clean up, but eventually I just wanted it to be dealt with and since subdomains are free it can now exist as its own thing minifycalc.matthewmorete.com
minifycalc.matthewmorete.com
CSS Calc() Minifier
Condense calc() functions to their smallest form
000