Search
Responsible, Conditional Loading
25.12.2020
Over on the Polyplane blog (there’s no byline but presumably it’s Kilian Valkhof), there is a great article, Creating websites with prefers-reduced-data, about the prefers-reduced-data media query. No browser support yet, but eventually you can use it in CSS to make choices that reduce...
Edge Everything
22.12.2020
The series is a wrap my friends! Thanks for reading and a big special thanks to all the authors this year who shared something they have learned. Many authors really swung wide with thoughts about how we can be better and do better, which of course I really love.
Adam showed us logical properties...
Sharpen Your JavaScript Skills with Pluralsight (Sponsored)
21.12.2020
JavaScript recently turned 25 years old, and while it started by dominating over the client side world, this beautiful programming language is well on its way to taking over the server side. JavaScript isn’t just thriving — it’s evolving with new syntax features, patterns...
What Makes CSS Hard To Master
18.12.2020
Tim Severien:
I feel we, the community, have to acknowledge that CSS is easy to get started with and hard to master. Let’s reflect on the language and find out what makes it hard.
Tim’s reasons CSS is hard (in my own words):
You can look at a matching Ruleset, and still not have the whole...
Three Ways to Distinguish a Site From the Norm
16.12.2020
In an age where so much web design is already neat, clean, and simple, I can think of three ways to distinguish your site from the norm:
Stunning visuals that cannot be created in UI vector editors, like Figma and Sketch
Beautifully-animated interactions that cannot be dreamt in the language...
Slow Movement
16.12.2020
There was a time when I felt overwhelmed by how fast the web developed. It seemed like not a single day passed without a new plugin, framework, technique, or language feature being released. I believed that in order to survive as a freelancer and to compete with others I had to learn everything...
Let’s Create a Lightweight Native Event Bus in JavaScript
11.12.2020
An event bus is a design pattern (and while we’ll be talking about JavaScript here, it’s a design pattern in any language) that can be used to simplify communications between different components. It can also be thought of as publish/subscribe or pubsub.
The idea is that components can listen...
Late to Logical
7.12.2020
2020 brought another wave of logical property features to major browsers and I’ve thoroughly enjoyed my investment into logical, rather than physical, web styling. I feel like I’ve learned a new way to speak about the box model that results in less written code with more global coverage.
p {
...
Lots of Ways to Use Math.random() in JavaScript
30.11.2020
Math.random() is an API in JavaScript. It is a function that gives you a random number. The number returned will be between 0 (inclusive, as in, it’s possible for an actual 0 to be returned) and 1 (exclusive, as in, it’s not possible for an actual 1 to be returned).
Math.random(); // returns...
A Complete State Machine Made With HTML Checkboxes and CSS
27.11.2020
State machines are typically expressed on the web in JavaScript and often through the popular XState library. But the concept of a state machine is adaptable to just about any language, including, amazingly, HTML and CSS. In this article, we’re going to do exactly that. I recently built a website...
What I’m Thankful For: 2020
24.11.2020
My parents loathe when I use poor language but luckily they don’t read this blog so I’ll just be blunt: 2020 has been an absolute shit show. COVID-19 has been a world-wide source of devastation to lives, jobs, and our quality of life. That said, I’ve found myself feeling...
console.log({ myVariable });
19.11.2020
I think this might be my most popular tweet of all time, but I’m not sure how to verify that these days. I’ll restate this neat little trick here because blogging is cool and fun.
I used to do this a lot while debugging JavaScript:
console.log("myVariable: ", myVariable);
But now I...
Understanding flex-grow, flex-shrink, and flex-basis
11.11.2020
When you apply a CSS property to an element, there’s lots of things going on under the hood. For example, let’s say we have some HTML like this:
<div class="parent"<div class="child"Child</div<div class="child"Child</div<div class="child"Child</div</div
And...
ARIA in CSS
11.11.2020
Jeremey reacting to Sara’s tweet, about using [aria-*] selectors instead of classes when the styling you are applying is directly related to the ARIA state.
… this is my preferred way of hooking up CSS and JavaScript interactions. Here’s [an] old CodePen where you can see...
GIFS and prefers-reduced-motion
3.11.2020
The <picture> element has a trick it can do where it shows different image formats in different situations. If all you are interested in is formats for the sake of performance, maybe you’d do:
<picture<source srcset="img/waterfall.avif" type="image/avif"<source...
Smarter Ways to Generate a Deep Nested HTML Structure
21.10.2020
Let’s say we want to have the following HTML structure:
<div class='boo'<div class='boo'<div class='boo'<div class='boo'<div class='boo'</div</div</div</div</div
That’s real a pain to write manually. And the reason why this post was born was being...
Full Bleed
15.10.2020
We’ve covered techniques before for when you want a full-width element within a constrained-width column, like an edge-to-edge image within a narrower column of text. There are loads of techniques.
Perhaps my favorite is this little utility class:
.full-width {
width: 100vw;
position:...
Netlify Edge Handlers
13.10.2020
Some very cool news from Netlify: Edge Handlers are in Early Access (request it here). I think these couple of lines of code do a great job in explaining what an Edge Handler is:
export function onRequest(event) {
console.log(`Incoming request for ${event.request.url}`);
...
Web Technologies and Syntax
24.9.2020
JavaScript has a (newish) feature called optional chaining. Say I have code like:
const name = Data.person.name;
If person happens to not exist on Data, I’m going to get a hard, show-stopping error. With optional chaining, I can write:
const name = Data.person?.name;
Now if person...
China’s national blockchain project to support DAML smart contract language
14.9.2020
Digital Asset’s DAML will connect diverse blockchains on a national DLT project in China