Today I Learned - Rocky Kev

TIL Layers in CSS

POSTED ON:

TAGS:

This is hot experimental technology, so all of this is not production-ready.

But I'm so excited by this, I wanted to talk about it.

Layers allow us to 'stack' design without having to play that awful CSS specificity rule.

I HATE THIS CONCEPT WITH A PASSION. https://specifishity.com/

tl;dr: CSS goes through a lot of passes to determine style orders. Make the css more specific, and it takes priority. Add a #, and it takes even more priority. Add a freakin' !important;, and hurray, you're at the top.

And if you want to really ruin someone's life:

div.content > #my-link a[type="href"] {
background: red !important;
}

What's the specificity score on this?

Anybody?

EXACTLY NOBODY F***** KNOWS.

So back to layers --

Layers will appear above specificity rules.

Which also means, this is a opportunity to stop your hacky-ass specificity code and focus more on presentation at a more logical level.

@layer reset;     /* Create 1st layer named “reset” */
@layer base; /* Create 2nd layer named “base” */
@layer theme; /* Create 3rd layer named “theme” */
@layer utilities; /* Create 4th layer named “utilities” */

/* or one line version: @layer reset, base, theme, utilities; */

@layer reset { /* Append to layer named “reset” */

}

@layer base { /* Append to layer named “base” */

}

@layer theme { /* Append to layer named “theme” */

}

@layer utilities { /* Append to layer named utilities */

}

Maybe in your base layer, you make 90% of the buttons blue.

On landing pages, you want to stick to a specific theme, so maybe buttons are blue but with a hover effect animation.

And just on two pages, you want the buttons to also have thick borders. So in utilities, you override the borders of the buttons.

You know how powerful that is?

REFERENCE:
The Future of CSS: Cascade Layers (CSS @layer)


Related TILs

Tagged:

TIL the alternate keyword

If 'alternate' appears along with the stylesheet keyword, the linked file is an alternative stylesheet. It won’t be applied to the document, but it will be ready for when we need it.

TIL Logical Properties

For that sweet sweet Internationalization you want to avoid directional words like 'left', 'right', 'top', and 'bottom'.

TIL Using pseudo-classes in your querySelector!

let notTuna = document.querySelectorAll('.sandwich:not(.tuna)')