选择器权值
标签选择器:权值为1
类选择器和伪类:权值为10
ID选择器:权值为100
通配符选择器:权值为0
行内样式:权值为1000
当权值相同时,遵循就近原则。
实验案例:
<p>派生选择器优先级</p>
<div id="test1">
<h1>CSS样式优先级</h1>
<p id="test2">所谓<b>CSS优先级</b>
,是指CSS样式在浏览器中被解析的先后顺序</p>
<div>权值相同,就近原则;权值不同,哪个权重高,使用哪个。</div>
</div>
两组权重相同的选择器:
#test1 p b{color:red;}
div #test2 b{color:gray;}
权重计算:
div #test2 b{color:gray;}
1+100+1=102
#test1 p b{color:red;}
100+1+1=102
遵循就近原则,采用div #test2 b{color:gray;}的样式。“CSS优先级”显示为灰色。
倘若选择器为以下方式:
#test1 p b{color:red;}
#test2 b{color:gray;}
权重计算:
#test2 b{color:gray;}
100+1=101
采用#test1 p b{color:red;}的样式。“CSS优先级”显示为红色。
但是这种权重计算的方式并不严谨,浏览器对于各个选择器真实计算权重应该id选择器、class选择器、与标签选择器的真实权重值权重比并非100:10:1
以类选择器和标签选择器为实例写了如下代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head >
<meta charset="UTF-8">
<title>伪类选择器</title>
<style type="text/css">
#classblue{color:blue;}
body div div div div div div div div p b{color:red;}
</style>
</head>
<body>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p>派生选择器优先级</p>
<div >
<h1>CSS样式优先级</h1>
<p>所谓<b class="classblue">CSS优先级</b>
,是指CSS样式在浏览器中被解析的先后顺序</p>
<div>权值相同,就近原则;权值不同,哪个权重高,使用哪个。</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
body div div div div div div div div p b{color:red;}
1+1+1+1+1+1+1+1+1+1+1=11
#classblue{color:blue;}
10
结果却是#classblue{color:blue;}优先级别更高,显示为蓝色。因此所谓不同选择器权重值的说法并不严谨,只是在一般情况下为了说明id选择器、class选择器和标签选择器之间的权重关系而做的形象数字化的类比。