Search
Re-Creating the Porky Pig Animation from Looney Tunes in CSS
26.1.2021
You know, Porky Pig coming out of those red rings announcing the end of a Looney Tunes cartoon. We’ll get there, but first we need to cover some CSS concepts.
Everything in CSS is a box, or rectangle. Rectangles …
The post Re-Creating the Porky Pig Animation from Looney Tunes in CSS appeared...
Tech Stacks and Website Longevity
25.1.2021
Steren Giannini in “My stack will outlive yours”:
My stack requires no maintenance, has perfect Lighthouse scores, will never have any security vulnerability, is based on open standards, is portable, has an instant dev loop, has no build step
…
The post Tech Stacks and Website...
Checkerboard Reveal
25.1.2021
Back when I was 10, I remember my cousin visiting our house. He was (and still is) a cool kid, the kind who’d bring his own self-programmed chess game on a floppy disk. And his version of chess was …
The post Checkerboard Reveal appeared first on CSS-Tricks.
You can support CSS-Tricks...
You want minmax(10px, 1fr) not 1fr
22.1.2021
There are a lot of grids on the web like this:
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
}
My message is that what they really should be is:
.grid {
display: grid;
grid-template-columns: repeat(3, minmax(10px, 1fr));
}
Why? In …
The post You want minmax(10px, 1fr)...
Servers: Cool Once Again
22.1.2021
There were jokes coming back from the holiday break that JavaScript decided to go all server-side. I think it was rooted in:
The Basecamp gang releasing Hotwire, which looks like marketing panache around a combination of technologies. “HTML over
…
The post Servers: Cool Once Again...
useStateInCustomProperties
21.1.2021
In my recent “Custom Properties as State” post, one of the things I mentioned was that theoretically, UI libraries, like React and Vue, could automatically map the state they manage over to CSS Custom Properties so we could use that state …
The post...
How to Play and Pause CSS Animations with CSS Custom Properties
21.1.2021
Let’s have a look CSS @keyframes animations, and specifically about how you can pause and otherwise control them. There is a CSS property specifically for it, that can be controlled with JavaScript, but there is plenty of nuance to get …
The post How to Play and Pause CSS Animations with...
Scrollbars on Hover
21.1.2021
First, scrollbars are a usability and accessibility thing. Second, a rule of thumb: if an area scrolls, it should have a visible scrollbar. But the web is a big place and I like tricks, so I’m going to cover the …
The post Scrollbars on Hover appeared first on CSS-Tricks.
You...
Lightweight Form Validation with Alpine.js and Iodine.js
20.1.2021
Many users these days expect instant feedback in form validation. How do you achieve this level of interactivity when you’re building a small static site or a server-rendered Rails or Laravel app? Alpine.js and Iodine.js are two minimal JavaScript …
The post Lightweight Form Validation with...
Life with ESM
19.1.2021
ESM, meaning ES Modules, meaning JavaScript Modules. Like, import and friends.
Browsers support it these days. There is plenty of nuance, but as long as you’ve dropped IE, the door is fairly open.
Before ESM, the situation for JavaScript …
The post Life with ESM appeared first...
Netlify Edge Handlers
19.1.2021
Netlify Edge Handlers are in Early Access (you can request it), but they are super cool and I think they are worth wrapping your brain around now. I think they change the nature of what Jamstack is and can be.…
The post Netlify Edge Handlers appeared first on CSS-Tricks.
You can support...
On Type Patterns and Style Guides
19.1.2021
Over the last six years or so, I’ve been using these things I’ve been calling “type patterns” in my web design work, and they’ve worked out pretty well for me. I’ll dig into what they are and how they can …
The post On Type Patterns and Style Guides appeared first on CSS-Tricks.
You...
Rendering the WordPress philosophy in GraphQL
18.1.2021
WordPress is a CMS that’s coded in PHP. But, even though PHP is the foundation, WordPress also holds a philosophy where user needs are prioritized over developer convenience. That philosophy establishes an implicit contract between the developers building WordPress themes …
The post...
AnimXYZ
18.1.2021
There are quite a few CSS animation libraries. They tend to be a pile of class names that you can apply as needed like “bounce” or “slide-right” and it’ll… do those things. They tend to be pretty opinionated with …
The post AnimXYZ appeared first...
On Auto-Generated Atomic CSS
15.1.2021
Robin Weser’s “The Shorthand-Longhand Problem in Atomic CSS” in an interesting journey through a tricky problem. The point is that when you take on the job of converting something HTML and CSS-like into actual HTML and CSS, there are edge …
The post On Auto-Generated Atomic...
3 Approaches to Integrate React with Custom Elements
15.1.2021
In my role as a web developer who sits at the intersection of design and code, I am drawn to Web Components because of their portability. It makes sense: custom elements are fully-functional HTML elements that work in all modern …
The post 3 Approaches to Integrate React with Custom Elements...
Proper Tabbing to Interactive Elements in Firefox on macOS
15.1.2021
I just had to debug an issue with focusable elements in Firefox. Someone reported to me that when tabbing to a certain element within a CodePen embed, it shot the scroll position to the top of the page (WTF?!). So, …
The post Proper Tabbing to Interactive Elements in Firefox on macOS...
Building an Ethereum app using Redwood.js and Fauna
15.1.2021
With the recent climb of Bitcoin’s price over 20k $USD, and to it recently breaking 30k, I thought it’s worth taking a deep dive back into creating Ethereum applications. Ethereum, as you should know by now, is a public (meaning, …
The post Building an Ethereum app using Redwood.js and Fauna...
How to Make GraphQL and DynamoDB Play Nicely Together
14.1.2021
Serverless, GraphQL, and DynamoDB are a powerful combination for building websites. The first two are well-loved, but DynamoDB is often misunderstood or actively avoided. It’s often dismissed by folks who consider it only worth the effort “at scale.”…
The post How to Make GraphQL...
Dynamic, Conditional Imports
13.1.2021
With ES Modules, you can natively import other JavaScript. Like confetti, duh:
import confetti from 'https://cdn.skypack.dev/canvas-confetti';
confetti();
That import statement is just gonna run. There is a pattern to do it conditionally though. It’s like this:
(async ()
…
The post...