Yes, but element selectors based on the tag name alone are considered bad practise. Especially in bigger HTML sites. Even more so if you use a JS library / framework or some broad browser stylesheet underneath, or you use the same stylesheet in several places.
Also, a div or img tag can be a button with its own event listener as well. That may be asking for trouble as well, but I’ve been there (not proud of it).
The reasons that made a bunch of people scream very loudly to not do that 20 years ago were never good enough for making generic advice and don’t exist anymore.
Even more so if you use a JS library / framework or some broad browser stylesheet underneath
Learn CSS layers, use CSS layers.
Overall, if you every feel the need to write in your code “a button (behaves like a button)”, it’s very likely you are doing something wrong.
I’m not sold on layers, they do nothing to simplify the current mess that CSS is, because they build on top of what’s already out there. If CSS was built with the concept of layers, then it could probably be better. In reality, we’ll always have specificity rules and IMO adding layers will just add to the complexity.
The specificity rule is not that hard to understand, I’m not sure what’s the point of throwing layers in the mix. There are new CSS features I like and I see simplifying written code, but this is definitely not one of them.
Yes, but element selectors based on the tag name alone are considered bad practise. Especially in bigger HTML sites. Even more so if you use a JS library / framework or some broad browser stylesheet underneath, or you use the same stylesheet in several places.
Also, a div or img tag can be a button with its own event listener as well. That may be asking for trouble as well, but I’ve been there (not proud of it).
A use case I find perfectly valid are
<label class="btn">
s for checkboxes and radios with huge-ass hit areas.Considered by whom?
The reasons that made a bunch of people scream very loudly to not do that 20 years ago were never good enough for making generic advice and don’t exist anymore.
Learn CSS layers, use CSS layers.
Overall, if you every feel the need to write in your code “a button (behaves like a button)”, it’s very likely you are doing something wrong.
I’m not sold on layers, they do nothing to simplify the current mess that CSS is, because they build on top of what’s already out there. If CSS was built with the concept of layers, then it could probably be better. In reality, we’ll always have specificity rules and IMO adding layers will just add to the complexity.
The specificity rule is not that hard to understand, I’m not sure what’s the point of throwing layers in the mix. There are new CSS features I like and I see simplifying written code, but this is definitely not one of them.
What are CSS layers? I’m legitimately curious.
They change the precedence rules so that you can import large frameworks at will and not have them disrupt your rules or each other.
Basically, anything you apply in one layer has less precedence than what is applied on the next layers.
So I’m clear, are you referring to the
@layer
CSS at-rule? Or, something else?Yes, I’m referring to the @layer rule.