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 | 2 days 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 | 4 days 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 days 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 | 10 days 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 | 14 days 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 | 15 days 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 | 21 days ago

A guide to destructuring in JavaScript

If you’ve spent plenty of time wading through modern JavaScript, odds are you’ve seen enough ellipses (...) to put even the most brooding 90s role-playing game protagonist to shame. I wouldn’t fault you for finding them a little confusing. Granted, I wouldn’t fault you for findin … | Continue reading


@piccalil.li | 22 days ago

Masonry and good defaults

My stance on masonry arriving in CSS is pretty clear: get the focus situation sorted and then I might be more interested. I personally think masonry is quite an antiquated design pattern, but it still finds itself on the web a lot so not needing JavaScript for layout is only a go … | Continue reading


@piccalil.li | 24 days ago

The Undeniable Utility Of CSS 

What I really like about this article is how Josh explains how :has() works. They’re especially good at that sort of thing. There’s lots of good real-world examples in there too which compliments the vibe I was trying to achieve earlier in the year. We need more real world exampl … | Continue reading


@piccalil.li | 29 days ago

How I build a button component

A button is arguably the most likely component to find itself in your codebase so I’m going to show you how I approach building one. The hope is it demystifies the humble button and encourages folks who reach for a and a JavaScript handler to use semantic elements. What we’re bu … | Continue reading


@piccalil.li | 1 month ago

Ahmad Shadeed has a really nice new website

I’m highlighting this new redesign of Ahmad Shadeed’s website because it ticks so many boxes for me as excellent work. First up, it’s clean, considered and uses typography and space really well. Ahmad’s site is a combination of a personal site and a professional site and they’ve … | Continue reading


@piccalil.li | 1 month ago

Daily Dev

Look, Twitter is trash now, let’s be honest. It used to be a gold mine for discovering stuff as a developer, but since the Musk takeover, finding anything of value is hard. We’re all fragmented now too, spread around Bluesky, Mastodon, Threads and LinkedIn, so finding stuff is st … | Continue reading


@piccalil.li | 1 month ago

CSS @property and the New Style

I’ve mentioned it before but practical, easy-to-understand articles are what make things stick in my brain. That’s exactly what Ryan Mulligan has cooked up for us. I’ve only slightly touched @property — mainly for container filling text — because I don’t really do high interactiv … | Continue reading


@piccalil.li | 1 month ago

Introducing: Complete CSS

Our first course is going live this year and it’s all about CSS! Well not all, but we’ll let the Complete CSS page explain just what that is about: …you can spend all the time in the world focussing purely on your CSS knowledge, but top level front-end development is much more th … | Continue reading


@piccalil.li | 1 month ago

The Dev Tools Performance Monitor Panel

I will be completely honest, I don’t know performance dev tools as well as I probably should. I always find articles and talks on performance fascinating but when I come to learn stuff myself, my eyes often glaze over. Articles like this are really helpful though because it’s a r … | Continue reading


@piccalil.li | 1 month ago

My under-engineered way to avoid a Flash of inAccurate coloR Theme (FART)

I’ll always share a simple solution because simple is almost always the best option. Theme preferences and toggles are one of those things that can be super over-engineered, so it’s great Christopher has come through with a simple solution for the former. It’s something that’s st … | Continue reading


@piccalil.li | 1 month ago

Building a breakout element with container units

We recently redesigned this site and a part of that was a sidebar-based article view. That aspect was fine because the Every Layout Sidebar is designed to deliver that layout with no fuss. I threw a spanner into the works though because we have a component named and I wanted it … | Continue reading


@piccalil.li | 1 month ago

Responsive bar charts in HTML and CSS

I love to see this sort of thing. In fact, nothing makes me happier on the web than seeing something simplified and improved because of that simplification. This article demonstrates that beautifully and teaches you how to write some pretty dang solid CSS that is battle tested in … | Continue reading


@piccalil.li | 1 month ago

Every Layout

I can’t believe Piccalilli links have been here since January and I still haven’t plugged the book I co-wrote with Heydon. We first published the book 5 years ago and it’s now in its 3rd addition. I’m biased, sure, but we still religiously use these layouts to build stunning webs … | Continue reading


@piccalil.li | 1 month ago

State of CSS 2024

In the 2023 edition of State of CSS, the demographics were as follows: Over 50% of respondents were between 25 and 44 Over 30% of respondents earned $50k or more Over 60% of respondents identified as male Sure, the demographics are seemingly improving year-on-year but to get a tr … | Continue reading


@piccalil.li | 1 month ago

Redesigning Piccalilli: the build process

FYI This is the third and final part of our series on redesigning Piccalilli. To get the most out of this article, we recommend you start from the top. At this point, we’ve completed the design work and have also produced a backlog of production tasks, so I’m sorry to say, the bu … | Continue reading


@piccalil.li | 1 month ago

What if you used Container Units for… everything?

I won’t provide any spoilers because Chris’ writeup is really good with a nice real world example. The only commentary I will add is using container queries for everything — including fluid typography and space — might feel like a good idea on paper, but you lose global flow and … | Continue reading


@piccalil.li | 1 month ago

Just Build Websites

I, like Jim, am also a keen(ish) golfer. Let me tell you about Golf: it’s one of the most over-engineered sports — quite possibly the most — out there. If you, like Jim says, watch the plethora of videos on social media you will almost certainly make golf not just more expensive, … | Continue reading


@piccalil.li | 2 months ago

Redesigning Piccalilli: the second part of the design process

FYI This is the second part of our series on redesigning Piccalilli. To get the most out of this article, we recommend you read the first part. After getting through our first sprint we have now completed our second and last sprint of the prototype design phase of our full redesi … | Continue reading


@piccalil.li | 2 months ago

The anchor element

I fawn over Heydon’s writing a lot, but for good reason: they are very good. Step up their new article about the humble HTML anchor element () which not only explains what it is and how to use it correctly, but also how it all works under the hood of the browser too. Very interes … | Continue reading


@piccalil.li | 2 months ago

How to animate around a circle

More posts like this please. Short, snappy and handy! I chuckled at the absurdity of conflicting rotation values in the resulting code, but it does the job perfectly well for what Robin was trying to achieve: animating around a shape, not spinning. I’m not sure when I would use t … | Continue reading


@piccalil.li | 2 months ago

Getting stuck: all the ways position:sticky can fail

For the longest time, I’ve had “do an article about why position sticky probably isn’t working” item on my articles to write list and I’m glad to tell you, I have removed that item today because Kilian has nailed it. The position: sticky capability is unbelievably useful, but it … | Continue reading


@piccalil.li | 2 months ago

Riffing on the latest CSS fit text approach

As promised in our link to Roman Komarov’s ‌Fit-to-Width Text: A New Technique article, I have implemented it and tweaked a couple of bits for our context. The context My upcoming CSS course is in full production mode at the moment and a big part of the course is that we’re build … | Continue reading


@piccalil.li | 2 months ago

CSS One-Liners to Improve (Almost) Every Project

I like posts like this: quick, actionable CSS that will improve both the visual appearance and the overall user experience. Here’s my favourites from the collection: Increase the body text size Increase the line between rows of text Wrap headings in a more balanced way They’re al … | Continue reading


@piccalil.li | 2 months ago

No No-JavaScript

I’m big on progressive enhancement but on real world projects, you gotta account for there being no JavaScript available for highly interactive elements. The ol’ no-js class or in CUBE CSS projects, a data-js="none" exception has been the go-to for years, but utilising a media qu … | Continue reading


@piccalil.li | 2 months ago

A handful of reasons JavaScript won’t be available

A browser extension has interfered with the site A spotty connection hasn’t loaded the dependencies correctly Internal IT policy has blocked dependencies WIFI network has blocked certain CDNs A user is viewing your site on a train which has just gone into a tunnel A device doesn’ … | Continue reading


@piccalil.li | 2 months ago

CSS Grid Areas

It’s something I am terrible for when using grid: not naming my grid areas and tweaking grid-column or grid-row values until it looks right 😬 This guide has been really helpful for me though. For example, I completely forgot you can name not just grid areas, but grid line … | Continue reading


@piccalil.li | 2 months ago

Fit-to-Width Text: A New Technique

Fit text is very much at the front of my mind at the moment. Those who attended my Smashing Workshop on scalable CSS will certainly attest to that. In the workshop, we achieved it with this sorta rule: font-size: var(--container-fill-text-size, max(15cqi, var(--size-step-10))); … | Continue reading


@piccalil.li | 2 months ago

Redesigning Piccalilli: the first part of the design process

Piccalilli is evolving into a more ambitious publisher and a big part of that is a brand refresh and full visual redesign. It’s a very large iteration of a longer term roadmap for the site which we’re undertaking here at Set Studio. I thought it would be a good idea to give you a … | Continue reading


@piccalil.li | 2 months ago

Styling Tables the Modern CSS Way

HTML tables are almost as old as the web itself, and have been used — and abused — for decades. Once upon a time, intrepid web designers hacked together complex layouts using tables, in the absence of other suitable methods. Thankfully that’s no longer common practice today, but … | Continue reading


@piccalil.li | 3 months ago

We want to help designers learn to code

Recently we published The time for designers to learn to code is now and it really resonated with folks. This is great! Our whole deal here at Piccalilli is to create content that helps people in the real world, working on real projects. With that in mind, we want to make content … | Continue reading


@piccalil.li | 3 months ago

Replacing GSAP with scroll animations

I like articles like this. It’s no way saying “you should replace GSAP” but more “hey, check out what you can do with CSS now” and hell yeh, check out what you can do with CSS now! I’ve only half been keeping an eye on the new CSS scroll animation stuff. I always wait to see cont … | Continue reading


@piccalil.li | 3 months ago

The 3 Types of CSS Utility Classes

This to me looks like a solid way to do things. I don’t agree with all of it, for sure, but I’m a big proponent of separating concerns. James breaks utilities down into 3 concerns: aesthetics, layout and spacing. Aesthetic being more like CUBE CSS Blocks, layouts being like CUBE … | Continue reading


@piccalil.li | 3 months ago

Front-End solution: Eyebrow heading dots

In the challenge I was stuck with a suboptimal solution to little decorative dots. If you haven’t already read that, do that first. I’ll wait. Right, you’re up to speed, let’s dig in. A call to arms I was really impressed with the efforts folks contributed to this challenge, so I … | Continue reading


@piccalil.li | 3 months ago

code-pen Web Component

There’s a lot of pre-production going on here on the upcoming CSS course and part of that is answering “how do we make demos easier to maintain in the long term.?” I think David might have the answer for us. Take a look at this code sample: <p>Hello world</p> | Continue reading


@piccalil.li | 3 months ago

Accessible SVG Forms

Every now and then an article appears in your RSS which blows your goddamn mind. This is one of those, friends. It’s long, but honestly, it’s absolute gold. I think folks who work in client services like agencies and freelancers will find this especially useful, because ideas lik … | Continue reading


@piccalil.li | 3 months ago

It’s about time I tried to explain what progressive enhancement actually is

I’m a long-time proponent of progressive enhancement to the point where readers are almost certainly bored, but I am like I am because it’s important. I’ve been saying the following for years: We build for everyone. Not just for ourselves or our peer groups. Do you want to build … | Continue reading


@piccalil.li | 3 months ago

How to stop Figma using your work to train their “AI” models

Let us know if there’s anything missed in this, but at a minimum, you want to turn off “Content training” in your Figma organisation’s admin area. To reach the right section, from your organisation page in Figma, click Admin then the Settings tab. The “AI” settings are right at t … | Continue reading


@piccalil.li | 3 months ago

Consent, LLM scrapers, and poisoning the well

A lot of thought is happening around “AI” and large language models (LLM) here at Piccalilli because we are flat against it. Sure using an “AI” assistant is pretty handy, but further poisoning the web with generated content slop is almost certainly going to have detrimental conse … | Continue reading


@piccalil.li | 3 months ago

The time for designers to learn to code is now

One of the most valuable things I ever did as a designer was learn to code. Initially, it was a baseline understanding so I could make CSS adjustments to front-end implementations of my design work. Developers never really got the attention to detail I was looking for, so I took … | Continue reading


@piccalil.li | 3 months ago

Front-End challenge: Eyebrow heading dots

I’m going to do this thing a little differently and start with my solution and ask for folks to come up with a better solution. The context is a little “eyebrow” heading, but the complexity is there are decorative dots each side. I’m close — with the help of magic numbers — but I … | Continue reading


@piccalil.li | 3 months ago

Mask image is pretty handy

We’ve been working on a pretty cool client project recently that’s got some fun branding which required some image masking. Y’know, this sorta thing: See the Pen Mask image by Andy Bell (@piccalilli) on CodePen. .masked-image { mask-image: url(https://assets.codepen.io/174183/m … | Continue reading


@piccalil.li | 4 months ago