`
iwebcode
  • 浏览: 2007758 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

{{CSS}}结构和层叠

 
阅读更多
每个合法的文档都会生成一个文档树,从而能根据元素的祖先,属性,兄弟元素等创建选择器来选择元素。有了这个结构树,选择器才能起作用,这也是CSS继承的核心。继承是从一个元素向其后代元素传递属性值所采用的机制。确定应当向一个元素应用哪些值时,用户代理不仅要考虑继承,还要考虑声明的特殊性,另外需要考虑声明本身的来源,这个过程称为层叠。

1.特殊性
每个选择器都有特殊性,对于每个规则,用户代理会计算选择器的特殊性,并将这个特殊性附加到规则中的各个声明。若一个元素有两个或多个冲突的属性声明,那么有最高特殊性的声明将胜出。
选择器的特殊性由选择器本身的组件确定。特殊性表述分为4个部分,如0,0,0,0。一个选择器的具体特殊性如下确定:
1)对于选择器给定的各个ID属性值,加0,1,0,0
2)对于选择器给定的各个类属性值,属性选择或伪类,加0,0,1,0
3)对于选择器给定的各个元素和伪元素,加0,0,0,1
4)结合符和通配选择器对特殊性没有任何贡献。其特殊性为0,0,0,0,但这与根本没有特殊性(继承没有特殊性)有本质区别。
5)一般地,第一个0是为内联样式表声明保留的,它比所有其他声明的特殊性都高。其特殊性为1,0,0,0。(为内联样式表声明保留一位是CSS2.1才加上的)

2.重要性
有时某个声明可能很重要,超过了所有其他声明,CSS2.1称之为重要声明,并允许在这些声明的结束分号之前插入!important来标志。
标志为!important的声明并没有特殊的特殊性值,不过要与非重要声明分开考虑。实际上,所有!important声明会分组在一起,重要声明的特殊性冲突会在重要声明内部解决,而不会与非重要声明相混。类似地,我们认为所有非重要声明也归为一组,使用特殊性来解决冲突。若一个重要声明和一个非重要声明冲突,胜出的总是重要声明。

3.继承
基于继承机制,样式不仅应用到指定的元素,还会应用到它的后代元素。继承是CSS中最基本的内容,除非有必须,否则一般不会特别考虑。不过需要注意以下几点:
1)注意有些属性不能被继承,这往往归因于一个简单的常识。一般地,大多数框模型属性(包括外边距,内边距,背景和边框)都不能被继承。
2)继承的值根本没有特殊性,甚至连0特殊性都没有。如下:
*{color:gray;}
h1#page-title{color:black;}

<h1 id="page-title">Meetkat <em>CEntral</em><h1>
<p>Welcome to the best place on the web</p>

因为通配选择器适用于所有元素,而且有0特殊性,其颜色声明指定的值gray要优先于继承值(black),因为继承值根本没有特殊性。故em元素会显示为灰色而不是黑色。

4.层叠
CSS所基于的方法是让样式层叠在一起,这是通过继承和特殊性做到的,CSS2.1的层叠规则如下:
1)找出所有相关的规则,这些规则都包含与一个给定元素匹配的选择器
2)按显式权重对应用到给定元素的所有声明排序。标志!important的规则的权重高于没有!important标志的规则。按来源对应用到给定元素的所有声明排序。共有3种来源:创作人员,读者,用户代理。正常情况下,创作人员的样式要胜于读者的样式表,有!important标志的读者样式要强于所有其他样式,这包括有!important标志的创作人员样式。创作人员样式和读者样式都比用户代理的默认样式要强。
3)按特殊性对应用到给定元素的所有声明排序。有较高特殊性的元素权重重要大于较低特殊性的元素。
4)按出现顺序对应用到给定元素的所有声明排序。一个声明在样式表或文档中越后出现,它的权重就越大。如果样式表中有导入样式表的话,一般认为出现在导入样式表中的声明在前,主样式表中的所有声明在后。

接下来对2)3)4)详细说明:
2)按权重和来源排序
若两个样式规则应用到同一个元素,而且其中一个规则有!important标志,这个重要规则将胜出。在声明权重方面要考虑5级,权重由大到小的顺序依次为:
1.读者的重要声明
2.创作人员的重要声明
3.创作人员的正常声明
4.读者的正常声明
5.用户代理声明

3)按特殊性排序若
若向一个元素应用多个彼此冲突的声明,而且它们的权重相同,则要按特殊性排序,最特殊的声明最优先。

4)按顺序排序
若两个规则的权重,来源和特殊性完全相同,那么在样式表中后出现的一个会胜出。特别地,认为元素style属性中指定我样式位于文档样式表的最后,即放在所有其他规则的后面。不过,这一点已经没有意义了,因为CSS2.1明确指明内联样式的特殊性要高于所有样式表选择器。
正是由于这种按顺序排序,所以才有了通常推荐的链接样式顺序:link-visited-hover-active(LVHA)。
:link{color:blue;}
:visited{color:purple;}
:hover{color:red;}
:active{color:orange;}
这四个选择器的特殊性都是一样的:0,0,1,0。因为它们有相同的权重,来源,特殊性,故与元素匹配的最后一个选择器才会胜出。
正在“点击”的未访问链接可以与其中3个规则匹配——:link,:hover,:active——所以在这三个规则当中最后声明的一个胜出。若按照LVHA顺序,:active将会胜出,这也正是所期望的。

5.非CSS表现提示
文档有可能包含非CSS的表现提示,例如font元素。非CSS提示被处理为特殊性为0,并出现在创作人员样式表的最前面。只要有创作人员或读者样式,这种表现提示就会被覆盖,但用户代理的样式不能将其覆盖。

分享到:
评论

相关推荐

    CSS层叠样式表

    分享的是来自麦子学院网课,关于CSS层叠样式表的知识结构图,用的思维导图工具是xmind,一款免费的思维导图工具

    CSS层叠样式表学习指南

    CSS 结构和规则 各种选择符、伪类、伪元素和层叠顺序的入门。 CSS 属性 各种层叠样式表级别一有效的属性的描述。 将样式表加入到HTML中 各种将样式表加入到HTML文本中的方法。 依赖样式表 怎样会是滥用...

    CSS 层叠样式表手册

    CSS 结构和规则 各种选择符、伪类、伪元素和层叠顺序的入门。 CSS 属性 各种层叠样式表级别一有效的属性的描述。 将样式表加入到HTML中 各种将样式表加入到HTML文本中的方法。 依赖样式表 怎样会是滥用...

    CSS层叠样式表介绍

    DHTML(Dynamic HTML):以HTML语言为基础,使用JavaScript控制网页元素,利用CSS层叠样式表进行布局传统的Web的HTML页面文档结构和显示格式一直是混在一起的。这些给页面开发和调整带来了不便。HTML对网页的调整是粗糙...

    CSS--层叠样式表(DOC版)

    中文翻译为样式表! 它的作用简单的说:就是可以使你在同一页面里使用不同的超链接样式。更神奇的是,用CSS,仅仅改变一个文件就可以...CSS 速成\CSS 结构和规则\CSS 属性\将样式表加入到HTML中 \依赖样式表 \CSS 参考

    03_结构和层叠.xmind

    归属文章:CSS权威指南(第三版)_03_第3章_结构和层叠

    css(层叠样式表)规范文档

    结构与样式分离,在页面里只写入文档的结构,而将样式写于css文件中,通过外部调用CSS样式表来实现结构与样式的分离。 5.尽量使用派生选择器,减少ID命名, 如 #main-menu ul li {…} 6.属性书写顺序...

    css参考手册(exe版)

    CSS 结构和规则 各种选择符、伪类、伪元素和层叠顺序的入门。 CSS 属性 各种层叠样式表级别一有效的属性的描述。 将样式表加入到HTML中 各种将样式表加入到HTML文本中的方法。 依赖样式表 怎样会是滥用...

    css样式完全手册 自用的css文档

    CSS 结构和规则 各种选择符、伪类、伪元素和层叠顺序的入门。 CSS 属性 各种层叠样式表级别一有效的属性的描述。 将样式表加入到HTML中 各种将样式表加入到HTML文本中的方法。 依赖样式表 怎样会是滥用...

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

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

    详解CSS的结构与层叠以及格式化

    主要介绍了CSS的结构与层叠以及格式化,是学习CSS布局的基础知识,需要的朋友可以参考下

    计算机网络201003\css\5日精通CSS层叠样式表.

    你可以将格式和结构分离。 HTML从来没打算控制网页的格式或外观。这种语言定义了网页的结构和个要素的功能,而让浏览器自己决定应该让各要素以何种模样显示。 但是网页设计者要求的更多。所以当Netscape推出新的...

    将CSS按照层叠式结构化重新组织与构建

    『Styleneat』CSS 文件结构格式重新组织服务,可以将书写风格凌乱的 CSS 文件按照层叠式结构重新组建,方便您进行阅读和研究,十分实用的一个在线工具。 编程风格就如人的性格一般,不同程序员(设计师)的书写风格...

    CSS 3.0 中文参考手册,层叠样式表下载.rar

    备受期待的 CSS 3 新功能 圆角、多背景、@font-face 用户自定义字体、动画与渐变、渐变色、盒阴影、RGBa - 加入透明色、文字阴影等等 CSS3 的出现,让代码更简洁、页面结构更合理,性能和效果得到兼顾。

    CSS2 (Chinese).zip

    CSS2是一种样式表语言,作者和用户可以使用它将样式(如:字体,间距及语音提示等)附加到结构化的文档(如:HTML文档和XML应用)中。由于CSS2将文档呈现的样式和文档的内容相互分离,因此网页的写作和站点的维护...

    5日精通CSS层叠样式表

    CSS相关教程 通过CSS可以实现 将格式和结构分离 以前所未有的能力控制页面布局 制作体积更小下载更快的网页 将许多网页同时更新,比以前快更容易 浏览器将成为你更友好的界面

Global site tag (gtag.js) - Google Analytics