Search
The Many Bad (and Good!) Patterns for Close Buttons
27.5.2020
Manuel Matuzović details 10 bad HTML patterns for a close button. You know, stuff like this:
<a class="close" onclick="close()"×</a
Why is that bad? There is no href there, so it really isn’t a link (close buttons aren’t links). Not to mention the missing href makes this...
Flexbox-like “just put elements in a row” with CSS grid
21.5.2020
It occurred to me while we were talking about flexbox and gap that one reason we sometimes reach for flexbox is to chuck some boxes in a row and space them out a little.
My brain still reaches for flexbox in that situation, and with gap, it probably will continue to do so. It’s worth noting...
Offscreen Text for Copy & Paste
15.5.2020
The relationship between HTML and CSS is special: mixing content via HTML with presentation from CSS to make an awesome presentation. Sometimes, however, you need to employ CSS tricks solely to enhance functionality. This could be one of those cases. When browsing through the Firefox DevTools...
Pseudo-elements in the Web Animations API
14.5.2020
To use the Web Animations API (e.g. el.animate()) you need a reference to a DOM element to target. So, how do you use it on pseudo-elements, which don’t really offer a direct reference? Dan Wilson covers a (newish?) part of the API itself:
const logo...
Using CSS Masks to Create Jagged Edges
12.5.2020
I was working on a project that had this neat jagged edge along the bottom of a banner image.
Looking sharp… in more ways than one.
It’s something that made me think for a second and I learned something in the process! I thought I’d write up how I approached it so you can use it on your...
How I Put the Scroll Percentage in the Browser Title Bar
12.5.2020
Some nice trickery from Knut Melvær.
Ultimately the trick boils down to figuring out how far you’ve scrolled on the page and changing the title to show it, like:
document.title = `${percent}% ${post.title}`
Knut’s trick assumes React and installing an additional library. I’m sure...
min(), max(), and clamp() are CSS magic!
12.5.2020
Nice video from Kevin Powell. Here are some notes, thoughts, and stuff I learned while watching it. Right when they came out, I was mostly obsessed with font-size usage, but they are just functions, so they can be used anywhere you’d use a number, like a length.
Sometimes pretty basic usage...
Chromium lands Flexbox gap
9.5.2020
I mentioned this the other day via Michelle Barker’s coverage, but here I’ll link to the official announcement. The main thing is that we’ll be getting gap with flexbox, which means:
.flex-parent {
display: flex;
gap: 1rem;
}
.flex-child {
flex: 1;
}
That’s excellent...
`lh` and `rlh` units
5.5.2020
There’s some new units I was totally unaware of from the Level 4 spec for CSS values! The lh unit is “equal to the computed value of line-height” and rlh is the same only of the root element (probably the <html> element) rather than the current element.
Why would that...
Angular + Jamstack! (Free Webinar)
5.5.2020
(This is a sponsored post.)
It’s easy to think that working with Jamstack means working with some specific set of technologies. That’s how it’s traditionally been packaged for us. Think LAMP stack, where Linux, Apache, MySQL and PHP are explicit tools and languages. or MEAN...
No-Comma Color Functions in CSS
4.5.2020
There have been a couple of viral tweets about this lately, one from Adam Argyle and one from Mathias Bynes. This is a nice change that makes CSS a bit more clear. Before, every single color function actually needs two functions, one for transparency and one without, this eliminates that need...
Alpine.js: The JavaScript Framework That’s Used Like jQuery, Written Like Vue, and Inspired by TailwindCSS
29.4.2020
We have big JavaScript frameworks that tons of people already use and like, including React, Vue, Angular, and Svelte. Do we need another JavaScript library? Let’s take a look at Alpine.js and you can decide for yourself. Alpine.js is for developers who aren’t looking to build a single page...
How to Redirect a Search Form to a Site-Scoped Google Search
29.4.2020
This is just a tiny little trick that might be helpful on a site where you don’t have the time or desire to build out a really good on-site search solution. Google.com itself can perform searches scoped to one particular site. The trick is getting people there using that special syntax...
@property
25.4.2020
The @property is totally new to me, but I see it’s headed to Chrome, so I suppose it’s good to know about!
There is a draft spec and an “intent to ship” document. The code from that document shows:
@property --my-property {
syntax: "<color";
initial-value: green;
...
Pseudo-Randomly Adding Illustrations with CSS
17.4.2020
Between each post of Eric Meyer’s blog there’s this rather lovely illustration that can randomly be one of these five options:
Eric made each illustration into a separate background image then switches out that image with the nth-of-type CSS property, like this:
.entry:nth-of-type(2n+1)::before...
Create a Responsive CSS Motion Path? Sure We Can!
15.4.2020
There was a discussion recently on the Animation at Work Slack: how could you make a CSS motion path responsive? What techniques would be work? This got me thinking.
A CSS motion path allows us to animate elements along custom user-defined paths. Those paths follow the same structure as SVG paths....
Thinking in Behaviors, Not Screen Sizes
11.4.2020
Chase McCoy wrote a nifty post about the “gap problem” when making a grid of items. His argument might be summarized like this: how should we space elements with margins in CSS? He notes that the gap property isn’t quite ready for prime time when it comes to using it with flexbox, like this:
.grid...
CSS Findings From The New Facebook Design
7.4.2020
Ahmad Shadeed digs around the new Facebook’s front-end code.
One that stood out to me:
.element {
inset: 4px 0;
/* Which is equivalent to: top: 4px, bottom: 4px, left: 0, right: 0 */
}
Whaaat? This is the first I’ve heard of the inset property. Ahmad said he saw it working...
Wide Gamut Color in CSS with Display-P3
31.3.2020
Here’s something I’d never heard of before: Display-P3 support in CSS Color Module Level 4 spec. This is a new color profile supported by certain displays and it introduces a much wider range of colors that we can choose from.
Right now the syntax looks something like this in CSS:
header...
How They Fit Together: Transform, Translate, Rotate, Scale, and Offset
30.3.2020
Firefox 72 was first out of the gate with "independent transforms." That is, instead of having to combine transforms together, like:
.el {
transform: rotate(10deg) scale(0.95) translate(10px, 10px);
}
...we can do:
.el {
rotate: 10deg;
scale: 0.95;
translate: 10px 10px;
}
That's extremely...