Search
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...
What if you could cut your hosting costs by 80%? Webiny Serverless CMS makes it possible.
21.1.2021
Are you hosting one or more websites and are using a headless CMS? Are you hosting your CMS on a virtual machine or a container, or using a SaaS solution? If so, then you’re paying for the uptime, regardless if …
The post What if you could cut your hosting costs by 80%? Webiny...
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...
New in Chrome 88: aspect-ratio
20.1.2021
And it was released yesterday! The big news for us in CSS Land is that the new release supports the aspect-ratio property. This comes right on the heels of Safari announcing support for it in Safari Technology Preview 118, …
The post New in Chrome 88: aspect-ratio appeared first...
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...
State of JavaScript 2020
18.1.2021
We rounded up a bunch of published 2020 annual reports right before the year ended and compiled them into a big ol’ list. The end of the list called out a couple of in-progress surveys, one of which was …
The post State of JavaScript 2020 appeared first on CSS-Tricks.
You can support...
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...
Fading in a Page on Load with CSS & JavaScript
13.1.2021
Louis Lazaris demonstrates a very simple way of doing this.
Hide the body (with JavaScript) right away with opacity: 0
Wait for all the JavaScript to execute
Unhide the body by transitioning it back to opacity: 1
Like this:
CodePen…
The post Fading in a Page on Load with CSS &...