We all know that there are 3 basic settings for css, namely
1. Inline is also called embedded. For example:
<div style='background:red'></div>
2. Inline, wrapped with style tags in the html file. For example:
<html> <style type='text/css'> div{ background:red; } </style></html>
3. Link type, referenced using link tags in html files. For example:
<html> <link rel='stylesheet' type='text/css' href='style.css'/></html>
Note: There is another This @import writing method is not commonly used and has compatibility issues. It is ignored.
When we use these three methods at the same time to set styles on the same target element, the priority is inline > inline > link
Generally, in the same way (file), whoever comes next has the highest priority. Many people know this,
But many people ignore that different selectors also have priorities.
First of all, let’s recall the css selector type
#id name{ attribute name: attribute value; }
.class name{ attribute name: attribute value; }
tag name{ attribute name: attribute value; }
This is one of the 3 basic selectors. There are compound selectors that combine them with each other
We write a css style file and introduce it into the css.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>css优先级讨论</title></head><link rel="stylesheet" type="text/css" href="base.css"/><body> <div id='red' class='blue' >颜色</div></body></html>
base.css file As follows
@charset "utf-8";/* CSS Document */#red{ color:red;}.blue{ color:blue;}div{ color:black;}
These three style settings are all for one element and are all in the link file. They should override the previous ones in order, but the browser The result of the operation is
This means that the id selector has the highest priority. Please see the figure below for the specific selector weight
Through this picture, we can calculate which setting has a higher priority. At the same time, we will also realize that the priority of the link may be greater than the embedded one! In practice, we often encounter this kind of error caused by problems. Now let’s look at a practical example
In this page, the color attribute of the button "Next" is set three times, and all of them are In the base.css file, the subsequent color values do not overwrite the previous settings and become white, because the first circle uses a class label weight of 11, the second circle uses a class weight of 10, and the last one uses a label weight of 1. Naturally, the effective solution for the first setting is very simple. Change the second selector and the result is as follows
The weight values are equal and the back covers the front. That’s it. It’s not enough for errors. Please point it out.