Published at
Updated at
Reading time
9min
The Web Weekly newsletter keeps you up to date, teaches you web development tricks and covers all things working in tech.

Guten Tag! Guten Tag! πŸ‘‹

Are you sure you use the fieldset element correctly? Have you checked all these new baseline tools? And do you know that you can transition to height: auto these days?

Turn on the Web Weekly tune and find all the answers below. Enjoy!

Pawel listens to β€œFila Brasilia - Apehorn Concerto”:

I can listen this beat in a loop for the wole day. Just so good!

Do you want to share your favorite song with the Web Weekly community? Hit reply; there are four more songs left in the queue.

Last week, a friend asked me if I knew of any design showcases for great-looking sites that don't use web fonts. I know about modernfontstacks.com but that's about it.

Modern Font Stacks β€” System font stack CSS organized by typeface classification for every modern OS

Modern Font Stacks is an excellent resource, but we're missing a showcase or collection of sites that don't feel like they're using system fonts. I looked around, and there didn't seem to be such a thing. Am I wrong?

And because I can't stop creating lists, I'm very close to kicking off another project highlighting great designs coming with 0kb downloaded fonts.

This is where you come in! 🫡 Do you know great-looking system font sites? Or have you maybe seen such a showcase?

We can't be the only ones struggling to convince a designer to use system fonts, or can we?

Let me know if you have any thoughts on the topic!

If you enjoy Web Weekly, help me grow this newsletter and let your friends know...

A quick "repost" really helps me out. Thank you! ❀️

And a special thank you goes to Bart this week. Thank you for supporting this small indie newsletter! I very much appreciate you! ❀️

Something that made me smile this week

Two eyes in the mcos menu bar following the mouse cursor.

I don't know how much this app enhances productivity, but it makes me happy.

Watch your cursor

New on the blog

Jim might be onto something here...

Animated page navigations that are done without any JavaScript

Jim trolled us in his post "Building Websites With LLMS". LLMS being Lots of Little HTML pages. Not sure if this counts as a proper acronym because it gives me strong FART (Flash of inAccurate coloR Theme) vibes. πŸ˜…

However, what you see above is all using CSS-only view transitions. Different pages transition into each other, giving a smooth SPA feeling. The catch: Jim put his navigation on its own HTML page to enable the transition. Will this be a new pattern for static pages? The /menu/ feels weird at first and messes with the history, but I'm game for good-looking CSS-only pages!

Animate your static pages

fieldset best practices

It's to note that a fieldset element (or any element with a role="group") will only be recognised as a group by assistive technologies if it has an accessible name. Without an accessible name, the group role will not be conveyed.

Short'n'sweet: If you're using fieldset elements, this article is worth checking to see if you're doing it correctly!

Provide semantics

Animated and CSS-only accordions

Stefan in a YouTube video explaining code.

I continue to collaborate with my friends at Builder.io and published another "bundle" explaining how to build animated CSS accordions with transition-behavior, ::details-content and interpolate-size. If you haven't used any of these CSS properties, you should check it out because we can finally transition to height: auto.

Read the blog Watch the video

You're halfway through!

Wowza! Would you enjoy getting Web Weekly straight to your inbox?

The wonderful weird web – Stretched Emojis

Stretched emoji looking very weird.

If you were ever looking for a quick way to stretch emojis (who isn't, right?), the "Long Emoji Make" is what you're looking for!

Stretch!

Quick reminder: Node includes styleText these days

import { styleText } from "node:util";  const exampleRed = styleText("red", "I am red!"); const exampleBlue = styleText("blue", "I am blue!"); const exampleBlueBold = styleText("bold", exampleBlue);  console.log(exampleRed);

Just because I used the Node.js color utils this week, CLI text styling is built-in if you want to add some colors to your logs.

Color your CLI output

Weird dialog default styles

 dialog:modal {   position: fixed;   overflow: auto;   inset-block: 0;   max-width: calc(100% - 6px - 2em);   max-height: calc(100% - 6px - 2em); }

Simon discovered these browser default styles. πŸ‘† And look at it: calc(100% - 6px - 2em). What? Of course, he blogged about it, and the person who implemented these styles even showed up and explained why. I love the internet!

Understand the defaults

Node 20.19.0 is out, and it's a huge deal!

require(esm) is now enabled by default β€” Support for loading native ESM using require() had been available on v20 under the command line flag --experimental-require-module, and available by default on v22 and v23. It is now no longer behind a flag on v20.

Trick question: what Node.js version are you running on your machine right now? If it's Node 18, you might want to look into upgrading soon'ish because "end of life" is near.

Node.js release schedule showing that Node 18 reaches end of life soon'ish.

And if you upgrade, you should jump up to the recent Node 20 because Node 20.19.0 can now require ECMAScript modules (ESM)! 😱 Node 22 and 23 could do it already. Is this a big deal?

Heck yeah! For quite a while, the JS ecosystem was in a limbo state, fighting incompatibilities between CommonJS and ESM. This problem is resolved now. We can all ship modules, and older code bases should be able to use them as long as there's no top-level await.

Disclaimer: I've only read the release post and will play with it soon.

Upgrade

Baseline tooling

We all grew up with caniuse.com to check for feature browser support, right? I, personally, check MDN Compat Data more these days. However, with the WebDX community group moving quickly, the baseline has become my place to go more and more. And there are a lot of tools and sites to keep an eye on.

First, if you're a blogger and want to show browser support stats, there's the baseline-status web component. Load the JS and drop the custom element into your posts to show browser support info. If you're covering cutting-edge browser stuff, including the web component is a no-brainer.

`baseline-status` web component.

Then there's the Web Platform feature explorer, which lets you poke around and discover new baseline features.

Pro tip: If you're riding the cutting edge, the site has RSS feeds to receive baseline updates in your feed reeder automatically.

Web Platform feature explorer.

And if you fancy your own tooling. You can also query the baseline data via API. It's pretty sweet to build something custom.

Here's my approach to rendering new baseline features using Node.

Terminal run showing the rendered result for newly available baseline entries.

And if all this isn't enough, Rick is also working on a VS Code extension and ESLint plugin. Great stuff!

Random MDN – :in-range

:in-range selector.

From the unlimited MDN knowledge archive...

Did you know there's an :in-range pseudo-selector that works for HTML elements with a min and max attribute? Now you do!

Validate!

TIL recap – A default parameter fun fact

// reuse `arg1` and set it as `arg2` function myFunc(arg1, arg2 = arg1) {   console.log(arg1, arg2); }  myFunc("arg1!"); // "arg1!" "arg1!"

A while ago, I learned that function default parameters can reuse earlier defined parameters. 🀯 You can find examples of when to use these on the blog.

Set the defaults

Find more short web development learnings in my "Today I learned" section.

New on the baseline β€” Intl.DurationFormat

const duration = {   hours: 1,   minutes: 46,   seconds: 40, };  // With style set to "long" and locale "fr-FR" new Intl.DurationFormat("fr-FR", { style: "long" }).format(duration); // "1 heure, 46 minutes et 40 secondes"

Hot of the press: everyone's most favorite JavaScript global (Intl) now comes with a new way to format time ranges and durations into something readable.

You should wait a bit longer until you ship it in prod, but Intl.DurationFormat entered the baseline this month! πŸŽ‰

Format time

Three valuable projects to have a look at

A new Tiny Helper

CanIEmail screenshot showing the "mask-image" support.

Have you heard of caniemail? You can probably guess what it's about…

Send great emails

Find more single-purpose online tools on tiny-helpers.dev.

Thought of the week

David argues that expecting LLMs to spit out great things without any effort and well... I agree. πŸ˜…

AI used by uninspired people will always result in uninspired output.

Did you learn something from this issue?

πŸ’™ If so, join 21 other Web Weekly supporters and give back with a small monthly donation on Patreon or GitHub Sponsors.

This is all, friends!

Loved this email? Hated this email? I want to hear about it!

If you think something needs improvement or something sparked some joy, reply to this email because I want to know more!

And with that, take care of yourself - mentally, physically, and emotionally.

I'll see you next week! πŸ‘‹

If you enjoyed this article...

Join 5.8k readers and learn something new every week with Web Weekly.

Web Weekly β€” Your friendly Web Dev newsletter
Reply to this post and share your thoughts via good old email.
Stefan standing in the park in front of a green background

About Stefan Judis

Frontend nerd with over ten years of experience, freelance dev, "Today I Learned" blogger, conference speaker, and Open Source maintainer.

Related Topics

Related Articles