What is the speciality
When applying CSS styles to an HTML element, there are often many ways to find the element, such as:
<p id="container" class="wrap_sty"> <p class="pra">这是一个段落</p> </p> <style> #container p { color:red } p p { color:green } p { color:yellow } </style>
It can be seen that there are many methods to affect an HTML element, far more than these. So if many of the same styles are applied to an element, which style will be displayed in the end? CSS uses a method called specificity to prioritize multiple selectors.
CSS specificity
The specificity of selectors is divided into 4 levels, a b c d, from left to right, the farther to the left, the higher the priority. If a selector rule has multiple +1 for selectors of the same type.
If it is an HTML internal style, then the specificity takes priority, a=1
The specificity of the id selector is b,
The class selector, pseudo-class selector, and attribute selector are c
tags Selectors and pseudo-element selectors are d
Let’s first talk about some selector types:
1.id selector
#myid { ... }
2. Class selector
.myclass { ... }
3. Tag selector
p { ... }
4. Attribute selector
[title="mytitle"] { ... }
Since most documents such as W3CSCHOOL may not explain it in detail, many people may think that the attribute selector is like this p[title="mytitle"] Or #id[title="mytitle"], etc., this is an attribute selector. Strictly speaking, this is not a pure attribute selector, but is composed of id selector, label selector, etc. and attribute selection. .
5. Pseudo-class selector
p:hover { ... }
Common pseudo-class selectors are:
Link pseudo-class, :link, :visited, use on the anchor element.
Dynamic pseudo-classes, :hover, :focus, :active, for any selection.
6. Pseudo-element selector
p::after { ... } p::before { ... }
Pseudo-element and pseudo-class are completely different concepts. They are called pseudo-elements because they are indeed A virtual HTML element can be generated, but the pseudo element cannot be obtained by the DOM.
There are many applications of pseudo-elements, the most common ones are::after clearing floats:
<ul> <li>A</li> <li>B</li> </ul> <style> li { float:left } ul::after { content: ""; display: block; clear: both } </style>
CSS specificity examples
The following are some CSS Selector specificity example:
Selector | Specificity | Speciality in base 10 |
---|---|---|
style="color: red" |
1, 0, 0, 0 | 1000 |
#id {} |
0, 1, 0, 0 | 100 |
#id #aid |
0, 2, 0, 0 | 200 |
.sty {} |
0, 0, 1, 0 | 10 |
.sty p[title=""] { } |
0, 0, 2, 0 | 20 |
p:hover {} | 0, 0, 1, 0 | 10 |
p {} |
0, 0, 0, 1 | 1 |
##ul::after {}
| 0, 0, 0, 11 | |
p p {}
| 0, 0, 0, 22 |
If the specificity of two rules is the same, the one defined later will overwrite the one defined first.
CSS Importance
There is another thing in CSS that can ignore specificity, that is !important. CSS properties using this tag always take precedence.
#id { color: red } .class { color: yellow !important }The second style will take precedence over the first, even if the id selector is more specific than the class selector.
If both attributes have !important, then the specificity determines the priority.
#id { color: red !important } .class { color: yellow !important }The result is that the first style takes precedence over the second.
IE6's support for !important is not complete. In IE6, if the !important attribute is first defined in a selector, and then the same attribute without !important is defined later, then !important will be invalid.
p { color: yellow !important; color: red; }In IE6, there is no way to be pornographic, so let’s see some blood!
IE6/7 You can also add some ingredients after !important without losing the taste, but it is recommended not to be so boring!
div { color: yellow !important you are dead; /* IE6/7依然有效 */ }
The above is the detailed content of Detailed introduction to selector priority order in CSS. For more information, please follow other related articles on the PHP Chinese website!

In a perfect world, our projects would have unlimited resources and time. Our teams would begin coding with well thought out and highly refined UX designs.

Oh, the Many Ways to Make Triangular Breadcrumb Ribbons

SVG has its own set of elements, attributes and properties to the extent that inline SVG code can get long and complex. By leveraging CSS and some of the forthcoming features of the SVG 2 specification, we can reduce that code for cleaner markup.

You might not know this, but JavaScript has stealthily accumulated quite a number of observers in recent times, and Intersection Observer is a part of that

We may not need to throw out all CSS animations. Remember, it’s prefers-reduced-motion, not prefers-no-motion.

PWA (Progressive Web Apps) have been with us for some time now. Yet, each time I try explaining it to clients, the same question pops up: "Will my users be

It's extremely surprising to me that HTML has never had any way to include other HTML files within it. Nor does there seem to be anything on the horizon that

There are a lot of different ways to use SVG. Depending on which way, the tactic for recoloring that SVG in different states or conditions — :hover,


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Dreamweaver Mac version
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

WebStorm Mac version
Useful JavaScript development tools