Detailed introduction to selector priority order in CSS
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 }
If both attributes have !important, then the specificity determines the priority.
#id { color: red !important } .class { color: yellow !important }
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; }
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!

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

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

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

Hot Topics



Using Bootstrap in Vue.js is divided into five steps: Install Bootstrap. Import Bootstrap in main.js. Use the Bootstrap component directly in the template. Optional: Custom style. Optional: Use plug-ins.

HTML defines the web structure, CSS is responsible for style and layout, and JavaScript gives dynamic interaction. The three perform their duties in web development and jointly build a colorful website.

There are two ways to create a Bootstrap split line: using the tag, which creates a horizontal split line. Use the CSS border property to create custom style split lines.

WebdevelopmentreliesonHTML,CSS,andJavaScript:1)HTMLstructurescontent,2)CSSstylesit,and3)JavaScriptaddsinteractivity,formingthebasisofmodernwebexperiences.

To adjust the size of elements in Bootstrap, you can use the dimension class, which includes: adjusting width: .col-, .w-, .mw-adjust height: .h-, .min-h-, .max-h-

How to use the Bootstrap button? Introduce Bootstrap CSS to create button elements and add Bootstrap button class to add button text

To set up the Bootstrap framework, you need to follow these steps: 1. Reference the Bootstrap file via CDN; 2. Download and host the file on your own server; 3. Include the Bootstrap file in HTML; 4. Compile Sass/Less as needed; 5. Import a custom file (optional). Once setup is complete, you can use Bootstrap's grid systems, components, and styles to create responsive websites and applications.

There are several ways to insert images in Bootstrap: insert images directly, using the HTML img tag. With the Bootstrap image component, you can provide responsive images and more styles. Set the image size, use the img-fluid class to make the image adaptable. Set the border, using the img-bordered class. Set the rounded corners and use the img-rounded class. Set the shadow, use the shadow class. Resize and position the image, using CSS style. Using the background image, use the background-image CSS property.
