How to write error messages that actually help users rather than frustrate them

One of the most consistently neglected parts of today’s user experiences is our handling of errors. We’re so busy designing the happy paths through our products that we often forget to give the same care and attention to the times when things will go wrong. Our digital products a … | Continue reading


@piccalil.li | 4 hours ago

CSS Custom Properties vs. Sass Variables: A Pragmatic Guide

I used to use Sass a lot — especially when I was working on extremely complicated CSS codebases as a consultant. Sass definitely is not "dead" either — tech doesn't die, it's 1s and 0s — it's extremely useful still! Sure, CSS is bringing stuff like nesting and mixins over from Sa … | Continue reading


@piccalil.li | 2 days ago

Introducing JavaScript for Everyone and Mindful Design

We're equal parts delighted and excited to share that Piccalilli will be working with Mat Marquis and Scott Riley to launch two premium courses this year: JavaScript for Everyone and Mindful Design. As promised last year when we launched Complete CSS, that course was the start of … | Continue reading


@piccalil.li | 7 days ago

UA+

I am a purveyor of reset styles, so of course, my ears pricked up when I spotted this. Especially as it's a Manuel Matuzović job! There's lots to like in his version of a reset, such as ultra low specificity :where() selector usage, like this: :where(html) { line-height: 1.5; } … | Continue reading


@piccalil.li | 10 days ago

Simplify sharing with built-in APIs and progressive enhancement

You’ve written a great post or produced a delightful website and now you want people to share it. In times gone by, you might be tempted to add a section like this: The problem is, these social sharing components are often not even touched by users, create potential privacy issue … | Continue reading


@piccalil.li | 14 days ago

Minding the gaps: A new way to draw separators in CSS

The gap capability in layout is — in my opinion — one of the most powerful capabilities CSS has added…ever. There's a problem with it though: if you want separator lines, you're stuck with hacks. We've done this sort of thing before which is not ideal: body { background: white; … | Continue reading


@piccalil.li | 17 days ago

Item Flow, Part 1: A new unified concept for layout

I think the Webkit team might be cooking here with this proposal. I like this part: item-direction: row | column | row-reverse | column-reverse This working for both flexbox and grid is what I like to see too. I also really like this idea: .container { display: flex; item-pa … | Continue reading


@piccalil.li | 17 days ago

If it works, it's right

I really enjoyed reading this article by Alex Riviere and found myself nodding along in places. I do disagree with the overall approach though because I come at layout from a different angle. I'm very much in the "layout should be a skeletal, flexible system" camp and have articu … | Continue reading


@piccalil.li | 21 days ago

Carousels with CSS

Carousels are a design pattern that will probably outlive civilisation I'm afraid. As much as the fact that you probably don't need a carousel is true, that overflow pattern is useful where there's not much screen real estate available. We're getting a heap of new stuff here to m … | Continue reading


@piccalil.li | 24 days ago

Real-world uses of TypeScript’s utility types

Hi! I’m Sam, and I write interactive blog posts about computer science. Because that doesn’t quite pay the bills, during the day I’m a senior software engineer for Budibase, an open source, low-code, self-hostable app building platform. We make heavy use of TypeScript, both on th … | Continue reading


@piccalil.li | 28 days ago

Chilled out text underlines

You know I'm a fan of default styles and making content look good, so this post by Chris immediately sparked my interest. What I like most about this new color-mix() capability is that it works with currentColor, which is the current computed value of the color. It makes Chris' t … | Continue reading


@piccalil.li | 1 month ago

We gave The Index a much needed design refresh and introduced advertising, site-wide

When we redesigned Piccalilli last year, our ultimate focus was on the web experience — specifically articles and links. The Index of course got some love, but we put a pin in giving it a full re-work until we had the capacity to give it our full focus. Y'know, iteration. We've r … | Continue reading


@piccalil.li | 1 month ago

CSS relative colours

Something I really struggle with, is the computer science aspect of our work as front-end developers. I'm a designer who learned HTML and CSS out of spite because I was fed up of my pixel perfect Photoshop files not being represented correctly. How that attitude has changed over … | Continue reading


@piccalil.li | 1 month ago

Tips on extensible and maintainable components

In my first developer job, I worked on the software I had used in a different role at the same company. On my first day, I naively explained the business need for an extra thousand lines of code to the developer working on the project. Learning to maintain and fix a legacy codeba … | Continue reading


@piccalil.li | 1 month ago

Is the button focusable?

I won't give away many spoilers here, just in case you want to play this earnestly, but aria-hidden="true" being focusable while also not being available in the accessibility tree should be a warning in itself to be careful with elements. Using aria-hidden="true" on a creates a … | Continue reading


@piccalil.li | 1 month ago

In praise of off-screen menus

It’s fairly accepted that keeping navigation visible is best practice for menu design, right? At least when it comes to designing for desktop viewports. Nielsen Norman Group goes as far as saying that off-screen menus are “not appropriate for desktop websites and apps”. Like a lo … | Continue reading


@piccalil.li | 1 month ago

How to Use ARIA Alert Effectively

With all the best will in the world, it can be really hard to get accessibility right. It's also hard to find the right answers. Sure there's the WCAG guidelines, but they're also quite difficult to understand. With all that in mind, I'm always endlessly thankful for easy to read … | Continue reading


@piccalil.li | 1 month ago

Rethinking Find-in-Page Accessibility: Making Hidden Text Work for Everyone

I stumbled upon this article and firstly, I learned yet another an important lesson about making presumptions about screen reader users: It wasn't my first time seeing someone blind use assistive technology for web navigation, but this experience stood out. Instead of relying on … | Continue reading


@piccalil.li | 1 month ago

Using the step and pattern attributes to make number inputs more useful

If you ever have an HTML element for numbers — — you might notice that it defaults to accepting integers as values, and increments and decrements by one. There's ways to make it accept, increment by, and decrement by decimal values too. The step attribute When you add the step … | Continue reading


@piccalil.li | 2 months ago

What I learned from migrating a Vue project from Vuex to Pinia

Recently I had the experience of migrating a Vue web app to a new state management library, Pinia, which was interesting from both a technical and non-technical point of view. In this article I’ll share my thoughts and findings on when, why and how you might consider carrying out … | Continue reading


@piccalil.li | 2 months ago

CSS nesting: use with caution

I’ve been doing this CSS thing for over 15 years and I’ve seen a lot of change in that time. A lot of the time, I see a new CSS feature and immediately get excited about how helpful it’s going to be for me and the team in the long term. A good example of that is text-box-trim. Th … | Continue reading


@piccalil.li | 2 months ago

The Index

Did you know we send out a newsletter twice a week? I know, I know, there’s a lot of newsletters out there, but let me tell you what The Index does: It goes out on a Wednesday and Friday The focus is around 5 links per issue and that’s it We try to get a nice blend of front-end, … | Continue reading


@piccalil.li | 2 months ago

My website has been gaslighting you

This is really cool. It’s also a really important demonstration of your website is your home so you can do whatever the heck you want with it, and you should. Dave has opted to roll out a subtle daily colour change based on a hue rotation and what day of the year we’re on. Sure, … | Continue reading


@piccalil.li | 2 months ago

Technologies and frameworks we use in our design studio

Before we get started, I can’t stress the following enough: the choices we make at Set Studio don’t challenge your choices. You might also not agree with our choices and that’s fine, but we don’t need alternatives evangelising to us. To paraphrase Rachel Andrew: If it works, it’s … | Continue reading


@piccalil.li | 3 months ago

The Importance of Investing in Soft Skills in the Age of AI

It’s very rare I write for other publications than this one, but I wanted to give CSS-Tricks (especially Geoff) a nod because they’re working their way back to what they did best. This article sort of fits Piccalilli, but I think it fits CSS-Tricks better. I certainly wanted it t … | Continue reading


@piccalil.li | 3 months ago

A simple masonry-like composable layout

I started 2024 with a super in-depth Reality Check article (more of those coming this year) so I thought I’d start simple this year because I’m still a bit tired from, y’know, writing a whole CSS course 😅 What is masonry? I’m not going to presume that everyone knows what … | Continue reading


@piccalil.li | 3 months ago

Why I’m excited about text-box-trim as a designer

I’ve been excited by the potential of text-box-trim and text-edge for a while. They’re in draft status at the moment, but when more browser support is available, this capability will open up some exciting possibilities for improving typesetting in the browser, as well as giving u … | Continue reading


@piccalil.li | 3 months ago

State of JavaScript 2024

The obvious lack of diversity (and respondents versus last year 😬) applies of course, but there’s some interesting stuff in here still. The “other front-end frameworks” section specifically. Astro, Ember, Remix and jQuery have all grown in usage vs last year, but Next.js … | Continue reading


@piccalil.li | 4 months ago

Beautiful focus outlines

I like this a lot. Thomas has not only given plenty of detail on how to make outline look nice, but they’ve provided useful breakdowns of problems that could be happening for you and how to fix those problems. Keyboard focus styles are so important to get right, not just for acce … | Continue reading


@piccalil.li | 4 months ago

One of Those “Onboarding” UIs, With Anchor Positioning

I’ve been keeping half an eye on popovers and anchor positioning. I see the latter as a requirement for the former though, so I’ve been waiting not just for browser support, but also, for a deeper dive into how to apply these in the real world. Ryan’s here with exactly what I was … | Continue reading


@piccalil.li | 4 months ago

Black Friday deals 2024

It’s that time of year again and our inboxes are riddled with emails. To (hopefully) help with that, we’ve collated some deals from independent authors and publishers who are offering some great discounts for you to enhance your skillset. Josh Comeau Josh is doing a bundle of the … | Continue reading


@piccalil.li | 4 months ago

We made an email template to help convince your boss to pay for Complete CSS

We recently launched Complete CSS, and a lot of people have mentioned that they don’t know how to approach their boss to ask them to pay for it. Here’s an email template for you to help with that. Dear {{Boss}}, I have come across a CSS course that I believe will elevate our team … | Continue reading


@piccalil.li | 4 months ago

Complete CSS is now live!

After 15+ years of teaching, architecting & delivering CSS for global corporations & startups, I’ve collated that experience into an extensive course. I’m bringing all of my experience of helping teams — both as a consultant and a design agency founder — not just to write better … | Continue reading


@piccalil.li | 4 months ago

The `
` and `` elements are getting an upgrade

Big fan of and checking in but what I don’t like is having to add extra elements to present a nice look and feel for them. Dealing with the disclosed content also requires extra elements if you want to apply a layout, for example. It looks like that is changing though! I’m espe … | Continue reading


@piccalil.li | 5 months ago

Complete CSS launches on November 26

FYI We have news! We're in the home straight, finishing up Complete CSS and with that, we have a launch date: November 26 at 12pm GMT. Sign up to get updates and we'll email you as soon as it is live. We've been working on Complete CSS since February 2024. The aim of the game for … | Continue reading


@piccalil.li | 5 months ago

A Friendly Introduction to Container Queries

Josh is here again with another stunner of an article and they’ve done a fantastic job of demonstrating how useful container queries can be in the real world. This is a really important part: I don’t think most designers are even aware that they have this exciting new capability. … | Continue reading


@piccalil.li | 5 months ago

Foundations: form validation and error messages

This post is a great run down of how much thought and consideration goes into making form validation actually useful. This part really stood out to me: However, if not well-designed, in-line error messages can become overwhelming. For example, flagging a field as incorrect after … | Continue reading


@piccalil.li | 5 months ago

Making content-aware components using CSS :has(), grid, and quantity queries

A big thing you need to contend with when working on design systems is anticipating all the different ways someone may use a component. The idea here is that you then preemptively provide sensible behavior and safeguards to keep things working well. An example of this is a “Simpl … | Continue reading


@piccalil.li | 5 months ago

Creating Design System-Friendly Snowflakes with Utility Classes

You’d think design systems are a utopia of planning, modular code and governance but I’m sorry to tell you that one of the many things that will take up a lot of your time in a more mature system is Snowflakes: A ’snowflake’ in a Design System is a one-off component that could be … | Continue reading


@piccalil.li | 5 months ago

An HTML Email Template with Basic Typography and Dark/Light Modes

The first sentence of this great article is the most important: I don’t mind HTML email, but it really can be overdone. There is a tendency to do too much. We try to keep emails that come from here super simple but we still get a couple of issues with Buttondown. We’re actually l … | Continue reading


@piccalil.li | 5 months ago

How the heck does it work? Phoenix LiveView

Let’s start with a brief, mostly subjective history of web tech. A long long time ago, web development was pretty much a single discipline where any developer would work throughout their stack. Most would be armed with a backend language or framework, HTML and CSS, with a sprinkl … | Continue reading


@piccalil.li | 6 months ago

“Secure Custom Fields” is not Advanced Custom Fields

FYI A break from our usual type of article here but it is very important we do because WordPress powers nearly half of the web. You may or may not be aware of the situation unfolding with Automattic and their CEO Matt Mullenweg against WP Engine. I recommend reading the following … | Continue reading


@piccalil.li | 6 months ago

HTML for people

I love to see resources arrive that are specifically for beginners. This new resource by Blake Watson is exactly that and it’s all about the most important language of the web: HTML. I’ve had a read through and it was a great bit of skill refreshing for me, so even if you conside … | Continue reading


@piccalil.li | 6 months ago

Building a robust frontend using progressive enhancement

When the gov.uk team offer a rundown like this, you have to read it because that team are some of the best in the business of great user experience. We’re so lucky in the UK because anything government related is so easy to use. They are, of course very into progressive enhanceme … | Continue reading


@piccalil.li | 6 months ago

Practical Accessibility Tips You Can Apply Today

We’ve all been there—rushing to meet a deadline, we throw together a dropdown menu or modal without fully considering its accessibility. But what if making a few small changes could drastically improve the experience for a broader range of users? Accessibility doesn’t have to be … | Continue reading


@piccalil.li | 6 months ago

I wasted a day on CSS selector performance to make a website load 2ms faster

Being the co-author of Every Layout and a super fan of wildcard selectors, as you can imagine, my mentions and DMs have been riddled with “wildcards are incredibly inefficient” for years. I of course brush that off because as Trys says in their article, browsers are very efficien … | Continue reading


@piccalil.li | 6 months ago

Making content-aware components using CSS’ :has(), grid, and quantity queries

Eric Bailey teaches us how to make a hyper-resilient component that responds not only to the container, but other languages too. | Continue reading


@piccalil.li | 6 months ago

Introducing TODS – a typographic and OpenType default stylesheet

I’ve always been a Richard Rutter fanboy, so seeing my CSS reset cited in their new reset fills me with pride. When it comes to web typography, Richard knows more than most and shares this vast knowledge really well with TODS. There’s a near 100% guarantee (unless you’re actually … | Continue reading


@piccalil.li | 6 months ago