关于css层叠

  “确定应当向一个元素应用哪些值时,用户代理不仅要考虑继承,还要考虑声明的特殊性,另外需要考虑声明本身的来源。这个过程就称为层叠。”——《css权威指南》

特殊性

内联样式  1,0,0,0
ID  0,1,0,0
类、属性选择、伪类  0,0,1,0
标签、伪元素  0,0,0,1
结合符、通配符  0,0,0,0

  

1 html>body table tr[id="totals"] td ul >li {color:maroon;}/*0,0,1,7*/
2 li#answer {color:navy;} /*0,1,0,1 (winner)*/

注:!important 是重要声明,永远比非重要声明优先。

继承

  大多数框模型属性(包括外边距、内边距、背景和边框)都不能继承。

  继承的值没有特殊性,连0特殊性(通配符)都没有。

  用户代理的超链接a有默认样式不会继承,如需修改要额外写一个a:link{color:inherit;}覆盖原有蓝色。

demo

1 <style type="text/css">
2     *{color:gray;}
3     #page{color:blue;}
4 </style>
1 <h1 id="page">This is <em>central line.</em></h1>

注:这个demo也说明了不加区别地使用通配选择器会引发的继承问题。

 权重和来源

5级声明权重由大到小顺序依次为:

  1. 读者的重要声明
  2. 创作人员的重要声明
  3. 创作人员的正常声明
  4. 读者的正常声明
  5. 用户代理声明

  如果两个规则的权重、来源和特殊性完全相同,那么后写的胜出。文档中包含的规则权重高于导入的规则(@import)。

   由此,推荐链接样式排序为LVHA(:link,:visited,:hover,:active)。当为同一个属性设置样式(如color),以AHLV的顺序编写就不会有悬停和响应的效果,因为链接会先找到:link而直接忽视AH。当然,如果使用组合伪类(:visited:hover)就不用担心这个问题。

层叠规则

  来源>特殊性>声明顺序(主样式表>导入样式表)>继承



参考资料

《css权威指南》第3章 结构与层叠 

时间: 2024-08-26 06:47:09

关于css层叠的相关文章

css层叠顺序

css层叠规则及各个选择器的特殊性. 1.有!important的规则的权重要高于没有的,有!important的规则优先级最高. 2.按特殊性对规则进行排序,各个选择器的特殊性为: 内联样式(即在html中声明的css)的特殊性为:1000 ID选择器的特殊性为:100 类属性值(class).伪类(:not).属性选择器([id=""])的特殊性为:10 各个元素和伪元素(:first-letter,first-line,before,after) 特殊性为:1 通配选择器(*)的

css层叠规则(层叠样式表)

CSS层叠规则是: 1.找出所有相关的规则,这些规则都包含与一个给定元素匹配的选择器. 2.按权重(!important)和来源对应用到给定元素的所有声明进行排序. 3.按特殊性对应用到给定元素的所有声明进行排序,有较高特殊性的元素权重要大于有较低特殊性的元素,0特殊性比无特殊性要强(继承). 4.按出现顺序对应用到给定元素的所有声明进行排序,后面出现的声明权重要大于前面出现的声明,即后定义的样式会覆盖前面定义的样式.(适用于特殊性一样的时候) 解读: 一.权重和来源 来源: 1.创作人员(开发

css层叠上下文

css层叠 stacking order #div{        background:#ddd;        border:1px solid red;        /*z-index: -1;*/        /*display:block*/        /*float: right;*/        /*display: inline-block;*/        /*z-index: auto;*/        /*z-index: 1;*/        }     

CSS 层叠规则

CSS 规则特殊性计算 特殊性 选择器的特殊性由选择器本身的组件确定.特殊性值表述为4个部分:0,0,0,0. 对于选择器中给定的各个id属性值,加0,1,0,0. 对于选择中给定的各个类属性值,属性选择或伪类,加0,0,1,0. 对于选择器中给定的各个元素和伪元素,加0,0,0,1. 结合符合通配符选择器对特殊性没有任何贡献 比较规则 因为值是从左向右排序的,所有1,0,0,0大于以0开头的所有特殊值,而不论后面的数是什么.比如,0,0,1,0比值0,0,0,13更高. 通配符的特殊性为0,0

CSS 层叠 学习笔记

看了一天控制器和视图头都大了,于是去微博上逛了逛,看到了一个讨论CSS权重的博客,于是把书翻了翻,对CSS中的层叠做一个笔记. 先从一个实例说起: 小明写了一个列表,并给里面的列表项添加了一些样式: #list li{ color: #000; } <ul id="list"> <li>Javascript</li> <li>HTML</li> <li>CSS</li> </ul> 结构写好

css层叠机制说明

css通过建立与文档的关联而实施效果.文档结构重要性不言而喻,对于建立良好的内容索引.提高可维护性.较好的可访问性:另,利于css选择器选择.继承机制. 概要地讲,层叠机制是处理对文档上应用样式时解决该应用何种样式的解决方案,涉及到重要性.特殊性.来源.顺序的问题.下面分别说明. 概要      每条声明都是有特殊性的,其特殊性由选择器组件确定.用户代理会将特殊性赋予给每条声明.由于存在选择器分组和声明分组的情况,用户代理会将它们解组出来的.然后对应个元素可能会有多条规则.这时,若都是针对相同的

css层叠选择

首先声明一下CSS三大特性——继承.优先级和层叠.继承即子类元素继承父类的样式,比如font-size,font-weight等f开头的css样式以及text-align,text-indent等t开头的样式以及我们常用的color.简单的就不演示了,强调一下font-size这个东东(虽然也有继承,但是标签不同继承的效果也不一样),比如下面的代码: <!DOCTYPE html> <html lang="en"> <head> <meta c

CSS层叠机制

先简单提提CSS引入方式吧: 1. 行间样式:将样式属性作为元素的style属性的值2. 内联样式:在head标签内的style标签内写入样式3. 外部link引入:利用link标签引入外部的样式表4. import引入:在style标签内通过@import方法引入外部的样式表 层叠(cascading)机制 一个元素的某个特定的样式属性(比如a标签的字体大小)可能来自于行间的style属性,内联样式表,外部引入的样式表,浏览器自定义的样式(UA),或是继承自父元素的样式,但是最终选择其中一个来

CSS层叠概述

什么是层叠: 层叠是一种机制,用于解决CSS声明冲突(多个相同的CSS声明属性,应用到一个元素上) 层叠的过程 层叠机制 比较优先级 比较特殊性 比较优先级 每一个声明都有一个优先级: 当发生冲突时,优先级高的会保留,优先级低的会被淘汰: 一个声明的优先级,与它的来源和重要性有关 解释来源 作者样式表 浏览器默认样式表 用户样式表 解释重要性 若属性值后面跟 !important,则表示一条重要声明:否则,表示普通声明. 示例: color:red;普通声明 color:red  !import