1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 <title></title> 6 <style> 7 a{color: #333;} 8 #div a{color: red;} 9 h1 a{color: green;} 10 .h a{color: blue;} 11 </style> 12 </head> 13 <body> 14 <div id="div"> 15 <h1 class="h"> 16 <a href="http://baidu.com">baidu</a> 17 </h1> 18 </div> 19 </body> 20 </html>
最后上面的a标签会显示为什么样色?此题考查了css样式的优先级。
--------------------------------------------分割线-------------------------------------------
下面为干货:
1.相同权值情况下,CSS样式的优先级总结来说,就是——就近原则(离被设置元素越近优先级别越高):
内联样式表(标签内部)> 嵌入样式表(当前文件中)> 外部样式表(外部文件中)。
2.权值不同时,浏览器是根据权值来判断使用哪种css样式的,哪种样式权值高就使用哪种样式。
权值规则:标签的权值为1,类选择符的权值为10,ID选择符的权值最高为100。
举例来理解:
1 p{color:red;} /*标签,权值为1*/ 2 3 p span{color:green;} /*两个标签,权值为1+1=2*/ 4 5 p>span{color:purple;}/*权值与上面的相同,因此采取就近原则,这个比上面的权值高*/ 6 7 .warning{color:white;} /*类选择符,权值为10*/ 8 9 p span.warning{color:purple;} /*权值为1+1+10=12*/ 10 11 #footer .note p{color:yellow;} /*权值为100+10+1=111*/
注意:(1)还有一个权值比较特殊——继承也有权值但很低,有的文献提出它只有0.1,所以可以理解为继承的权值最低。(继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代。如<p>便签内部的<span>标签就会继承该<p>标签的样式);
(2)做网页代码的时,有些特殊的情况需要为某些样式设置具有最高权值,可以使用!important来解决。
--------------------------------------------分割线-------------------------------------------
了解具体知识之后,再来看文章开头的题目。
a{color: #333;}/*标签,权值为1*/
#div a{color: red;}/*权值:100+1*/
h1 a{color: green;} /*权值:1+1*/
.h a{color: blue;}/*权值10+1*/
根据权值,a标签的颜色为红色。
-------------------------------------吃一堑长一智--------------------------------------
之前没有仔细的理解和记忆这些知识,吃过亏才知道重要性。继续努力吧!