`
javababy1
  • 浏览: 1169623 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

css层叠和继承

 
阅读更多

1. 层叠
我们知道文档中的一个元素可能同时被多个css选择器选中,每个选择器都有一些css规则,这就是层叠。这些规则有可能不矛盾的,自然这些规则将会同时起效,然而有些规则是相互冲突的,例如:

复制代码代码如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CSS Cascade</title>
<style type="text/css">
h1{color:Red;}
body h1{color:Blue;}
</style>
</head>
<body>
<h1>Hello CSS</h1>
</body>
</html>

为此需要为每条规则制定特殊性,当发生冲突的时候必须选出一条最高特殊性的规则来应用。CSS规则的特殊性可以用4个整数来表示,例如0,0,0,0.计算规则如下:

对于规则中的每个ID选择符,特殊性加0,1,0,0
对于规则中每个类选择符和属性选择符以及伪类,特殊性加0,0,1,0
对于规则中的每个元素名或者伪元素,特殊性加0,0,0,1
对于通配符,特殊性加0,0,0,0.
对于内联规则,特殊性加 1,0,0,0
最终得到结果就是这个规则的特殊性。两个特殊性的比较类似字符串大小的比较,是从左往右依次比较,第一个数字大的规则的特殊性高。上例中两条规则的特殊性分别是0,0,0,1 和 0,0,0,2,显然第二条胜出,因此最终字是蓝色的。

注意,通配符的特殊性0,0,0,0看起来没有作用,实际上不是,还有一种没有特殊性的规则,0,0,0,0要比没有特殊性更特殊,下面会介绍。

css还有一个!important标签,用来改变css规则的特殊性。实际上,在解析css规则特殊性的时候,是将具有!important的规则和没有此标签的规则利用上述方法分别计算特殊性,分别选出特殊性最高的规则。最终合并的时候,具有任何特殊性的带有!important标记的规则胜出。

2.继承
所谓继承,就是父元素的规则也会适用于子元素。比如给body设置为color:Red;那么他内部的元素如果没有其他的规则设置,也都会变成红色。继承得来的规则没有特殊性。下面看一个简单的例子:

复制代码代码如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CSS Cascade</title>
<style type="text/css">
*{color:Blue;}
div{color:Black;}
.imp{color:Red !important;}
#content{color:Green;}
</style>
</head>
<body>
<div>Hello <span>Css</span> </div>
<div id="content">
<p class="imp">Title</p>
Content Goes Here.
</div>
</body>
</html>

结果如下:

注意,第一行的Css并没有继承div的黑色,这是因为通配符的缘故。通配符的特殊性虽然是全0,但是还是比继承的特殊性要高。第二行展示了!important标记的作用。

另外,一些明显不应该继承的属性,比如border,margin,padding之类的是不会被继承的,具体可以参考css手册。

3. 其他
虽然有4个整数来表示一个特殊性,仍然有可能出现两条冲突的规则的特殊性完全一致的情况,此时就按照css规则出现的顺序来确定,在样式表中最后一个出现的规则胜出。一般不会出现这样的情况,只有一个情况例外,考虑如下样式表:

:active{color:Red;}
:hover{color:Blue;}
:visited{color:Purple;}
:link{color:Green;}

这样页面中的链接永远也不会显示红色和蓝色,因为一个链接要么被访问过,要么没有被访问过。而这两条规则在最后,因此总会胜出。如果改成这样:

:link{color:Green;}
:visited{color:Purple;}
:hover{color:Blue;}
:active{color:Red;}就能实现鼠标悬停和点击的瞬间变色的效果。这样的顺序的首字母正好连成 “LoVe HA”,这样的顺序被约定俗成的叫做Love Ha 规则。特殊性规则从理论上讲比较抽象和难懂,但在实践中,只要样式表是设计良好的,并不会有太多这方面的困扰,因此本文也不再做深究。
详细出处参考:http://www.jb51.net/css/25162.html

分享到:
评论

相关推荐

    CSS 层叠和继承实现

    我们知道文档中的一个元素可能同时被多个css选择器选中,每个选择器都有一些css规则,这就是层叠。所谓继承,就是父元素的规则也会适用于子元素。

    CSS层叠与继承的使用深入剖析

    你对CSS层叠和继承的概念和用法你是否熟悉,这里和大家分享一下,文档中的一个元素可能同时被多个CSS选择器选中,每个选择器都有一些CSS规则,这就是层叠,而所谓继承,就是父元素的规则也会适用于子元素。

    浅谈CSS中的继承性,特殊性,层叠性和重要性

    下面小编就为大家带来一篇浅谈CSS中的继承性,特殊性,层叠性和重要性。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Web开发培训第8课-CSS继承和层叠.pptx

    Web开发培训第8课-CSS继承和层叠.pptx

    CSS的继承与层叠.pdf

    CSS的继承与层叠.pdf 学习资料 复习资料 教学资源

    html+css+js网页设计

    层叠和继承: 理解 CSS 层叠规则和继承机制,以及如何通过合理的样式层叠和继承来管理样式。 布局技巧: 实现复杂的布局可能需要使用一些技巧,如弹性布局、网格布局、定位布局等,需要深入理解和实践。 兼容性和...

    CSS(层叠样式表)笔记.txt

    CSS(层叠样式表)是一种用于控制网页样式和布局的语言,它赋予网页以美观的外观和结构。通过将HTML文档与CSS样式分离,开发人员可以更好地管理、修改和维护网页的外观。以下是关于CSS笔记的详细描述: 样式规则: ...

    CSS样式继承和层叠

    主要介绍了CSS样式继承和层叠的相关资料,需要的朋友可以参考下

    CSS层叠样式表的层叠是什么意思(自我理解)

    基本上层叠的意思就是“继承”、“权重”、“覆盖”,通过良好的层级命名更好的实现效果,更少的代码,更多的功能,下面为大家详细介绍下,感兴趣的朋友不要错过

    CSS教程:学习CSS的继承性

    CSS是层叠样式表(Cascading Style Sheets)的简称,它的规范代表了互联网历史上一个独特的发展阶段。现在对于从事网页制作的朋友来说,很少没有听说过CSS了吧,因为在制作网页过程中我们经常需要用到。CSS允许我们为...

    CSS3笔记1

    多背景(CSS3)凹凸文字导航栏案例文本的装饰CSS 三大特性CSS层叠性CSS继承性CSS优先级CSS特殊性(Specificity)盒子模型(CSS重点)看

    CSS特殊性、继承与层叠

    主要介绍了CSS特殊性、继承与层叠的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

    精通CSS高级Web标准解决方案-包含源码(高清PDF中文版)

    1.2.4 层叠和特殊性 1.2.5 继承 1.3 规划、组织和维护样式表 1.3.1 对文档应用样式 1.3.2 对代码进行注释 1.3.3 样式指南 1.3.4 组织样式表以便简化维护 1.4 小结 第2章 可视化格式模型 2.1 框模型概述 ...

    前端知识css原理

    介绍什么是BFC,他有那些特性,css得层叠和继承,!important有哪些使用情况

    《CSS设计彻底研究》光盘源码

     1.6 CSS的层叠特性  1.7 本章小结  第2章 “CSS禅意花园”作品鉴赏   2.1 “CSS禅意花园”简介   2.2 郊野——两列布局   2.3 像素画——三列布局   2.4 百合池塘——三列布局变体   2.5 ...

Global site tag (gtag.js) - Google Analytics