This week
- This blog really isn't just for beating up on Apple for the way it harms users, the web, standards, and society to maintain power and profits. So here's some fun stuff I've been doing in my 11ty setup to improve page performance. Contents Page-Specific Resources via Shortcodes...
- Megazoid specimen, showing off variable depth and stroke axes. I recently had the pleasure of working with David Jonathan Ross (of DJR) to create a microsite for his type family Megazoid. Megazoid is a big, blocky exploration of raw geometry. It’s such a fun typeface! The font...
Two weeks ago
- CSS has been on fire lately, with tons of great new features. @starting-style is an interesting one; it allows us to use CSS transitions for enter animations, something previously reserved for CSS keyframe animations. But is the juice worth the squeeze?...
About a month ago
- A little while ago, I was trying to animate an element’s background color, so that it cycled through the rainbow. Seems easy, but it turns out, browsers have a surprisingly big limitation when it comes to color processing! In this tutorial, we’ll dig into the issue, and I’ll...
about 1 month ago
about 2 months ago
- It’s one thing to build a representation of a maze in memory. It’s quite another to render it so that people can view it in a web page. How do we do that? What are our options? And what happens if we try to make our maze rendering accessible?...
- I got invited to speak at CSS Day Amsterdam, the same conference that I dreamed about speaking at years ago. I’m honored to be part of the 2025 lineup. Intro I chose to talk about a term I called: Smart Layouts. In short, I advocated for building CSS layouts that are fluid...
- More explorations of ways to abuse the CSS `infinity` keyword, this time with more than just lengths....
- I’ve spent most of the summer so far writing a new course; if you follow me over on BlueSky - and you should - then you’ll have noticed I’ve been posting - skeeting? bleeting? I still don’t know what to call posting on BlueSky. Let’s go with bleeting. I’ve been bleeting about...
2 months ago
- In this article series, I plan to choose layouts from popular websites and see how I can rebuild them better in CSS. This time, it’s the top news section in Time.com’s layout. Let’s take a look. We have a header and a main news section. At first glance, it looks like a typical...
- I was on one of my rounds of social media trawling, just seeing what was floating through the aether, when I came across a toot by Andy P that said: Fun #css trick: width: calc(infinity * 1px); height: calc(infinity * 1px); …and I immediately thought, This is a perfect...
- In Chromium 139, CSS gets a new corner-shape property which unlocks some cool new CSS tricks. Most notably it gives us “squircles”, the mathematical superellipse shape introduced by Apple in iOS 7. Designers have been in love with them ever since and include them in every design...
- I’m making a new video course for Dometrain at the moment, and it’s all about CSS - one of the three pillars of the open web, along with HTML and JavaScript. I love CSS, I’ve been working with it literally since it was invented, but I absolutely understand why so many developers...
3 months ago
- This is a post in a series about building my new website, check out the previous post in this series. A note from the present day Hi, it’s present-day Nic here. I feel bad that this draft has been sitting in my posts for the better part of a year! I had pretty much drafted the...
- SVGs are one of the most remarkable technologies we have access to on the web. They’re first-class citizens, fully addressable with CSS and JavaScript. In this tutorial, I’ll cover all of the most important fundamentals, and show you some of the ridiculously-cool things we can...
- Frances has urged me for years to collect resources for folks getting into performance and platform-oriented web development. The effort has always seemed daunting, but the lack of such a list came up again at work, prompting me to take on the side-quest amidst a different...
- Core Principle Morph = animate attributes of the SAME element, not between different elements <rect width="50" ......
- Core Concept offset-path = places any element along a curved path (like a train on tracks) offset-distance = controls position along the path (0% = start, 100% = end) Basic Syntax .element { offset-path: path("M0 0 Q100 50 200 0"); /* curved path *......
- Transform Properties Traditional Chained Transforms .element { transform: translateY(10px) rotate(45deg) scale(1.2); transform-origin: center; /* or specific coordinates like 12px 7px */ } Individual Transform Properties .element { translate: ......
- Basic Structure points attribute = list of x,y coordinates separated by spaces or commas: 10,10 = first point 50,50 = second point 90,10 = third point 70,80 = fourth point Lines connect each point ......
- The three-value syntax flex: 1 1 300px; /* │ │ │ │ │ └── flex-basis (starting size) │ └──── flex-shrink (how much it can shrink) └────── flex-grow (how much it can grow) */ Most people use the shorthand (flex: 1) but the three-v......
- After shipping my work transforming HTML with Netlify’s edge functions I realized I have a little bug: the order of the icons specified in the URL doesn’t match the order in which they are displayed on screen. Why’s this happening? I have a bunch of links in my HTML document,...
- html { scroll-padding-top: 1.3rem; } @keyframes ref-alert { 0% { transform: scale(17); opacity: 0; } 20% { opacity: 1; } 80% { opacity: 1; } 100% { transform: scale(1); opacity: 0; } } sup.ref { margin-left: 0.09em; display: inline-block; position: relative; }...
Rows per page