CSS层叠机制

先简单提提CSS引入方式吧:

1. 行间样式:将样式属性作为元素的style属性的值
2. 内联样式:在head标签内的style标签内写入样式
3. 外部link引入:利用link标签引入外部的样式表
4. import引入:在style标签内通过@import方法引入外部的样式表

层叠(cascading)机制

一个元素的某个特定的样式属性(比如a标签的字体大小)可能来自于行间的style属性,内联样式表,外部引入的样式表,浏览器自定义的样式(UA),或是继承自父元素的样式,但是最终选择其中一个来表示,这个选择的过程便是层叠。

换句话说,就是将来自各种不同途径的样式,通过一定的排序规则,选出优先级最高的那个,赋予给指定元素的指定样式。

而说到排序规则,便要提到接下来的两点:特殊性(specificity)继承(inheritance)

特殊性

即选择器权重

最开始接触到的那套说法是:!important(无穷)> 行间(1000)> id > class、 伪类(100)> 元素、伪元素(1)>通配符(0)。

后来,有次面试,人问我,我就这么说,人就又问,那么十个元素选择器的权重是不是就和一个class一样了呢?嘿,我就蒙了.....

再后来,还有人跟我说,这个权重是按16进制计算的,可以去试试,257个元素选择器权重比一个class要高.....我还老老实实去试了.....大家不用去试了,不是那么回事

后来仔细读了了CSS权威指南和CSS文档(两处的说法差不多),才知道选择器权重比较是这么回事(important权重高于以下四种,通配符和浏览器自带样式以及继承的权重低于以下四种):

分为四个部分,如:0 ,0, 0,0 对应的顺序为:行间,ID,class,element

  • 如果有行间样式,则第一位加1
  • 如果有ID选择器,则第二位加上ID选择器的数量
  • 如果有class选择器,则第三位加上class选择器的数量
  • 如果有元素选择器,则第四位加上元素选择器的数量

比较规则:
1. 行间样式权重最高
2. 先比较最高位,数字大的权重高。eg:(0,2,0,0)>(0,1,0,0),(0,1,0,0) > (0,0,3,2)
3. 最高位权重相同,比较下一位,规则同上,数字大的权重高。eg:(0,1,2,0)>(0,1,1,0)
4. 所有位都相同,写在后面的样式覆盖前面的样式

继承

基于继承机制,样式不仅会应用到指定元素,还会应用到它的后代元素,如果理解了文档树的结构,这一点就很好理解了。

在元素没有指定特定的样式时,它便会继承来自父级的样式

但要注意,并不是所有的属性都能继承,像border

时间: 2024-10-10 06:45:52

CSS层叠机制的相关文章

css层叠机制说明

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

css层叠机制的比较、盒模型、继承规则

层叠机制 不同样式应用在同一标签时,会产生声明块冲突,这时就会自动触发层叠机制 1.比较优先权(平级时进行下一项比较) 2.比较特殊性(平级时进行下一项比较) 3.比较源层次 比较优先级 来源优先顺序:1.用户样式表 2.作者样式表 3.浏览器样式表 若属性值后跟上 !important ,则表示一条重要声明.否则为普通元素 例:color:red !impertant; 重要声明 比较特殊性(特指值.特指度) 每一个声明都有一个特殊性(适用范围越大,特殊性越低) 行内样式>ID选择器>类选择

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

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

CSS层叠概述

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

CSS层叠和继承

层叠 当有声明冲突的时候,浏览器会自动触发层叠机制 声明冲突:同一样式,不同的值,给同一个标签就会产生声明冲突 层叠的过程 1.比较优先级 一个声明的优先级,与它的来源和重要性有关 来源:1.作者(开发者)样式表:外部样式表:内部样式表:行内样式表 2.浏览器默认样式表 3.用户样式表 优先级排序:用户样式表>作者样式表>浏览器样式表 重要性:若属性值后跟上!important,则表示一条重要声明,否则,表示普通声明 例:color:red:普通声明 color:red !important:

层叠机制

在css里,同一个样式的不同属性值应用于同一个标签则会产生声明冲突. 例如: 一旦出现声明冲突,浏览器会自动生成层叠机制. 层叠的过程 1.比较优先级 声明的优先级主要是看来源及重要性 来源:作者样式表.浏览器默认的样式表.用户样式表 按优先级从高到低:用户样式表>作者样式表>浏览器样式表 重要性:判断声明块里是否有!important,如果有,则表示是重要声明,将应用这个样式,反之为普通声明 当优先级为同级的时候则进入比较特殊性 2.比较特殊性 优先级:行内选择器>ID选择器>类

css定位机制(布局)

css定位机制由三种:普通文档流.定位.浮动. 1,普通文档流:块级元素从上往下排列,行级元素从左到右排列. 2,定位:position属性可以对元素进行定位,有四个类型,static,relative,absolute,fixed static:元素框正常生成.块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中. relative:当设置了偏移值之后,元素相对于自身进行偏移,仍旧保持未偏移前的形状,但是它依然保留原来所占空间. absolute:元素定位

css层叠顺序

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

css定位机制

CSS 定位机制 CSS 有三种基本的定位机制:普通流.浮动和绝对定位. 除非专门指定,否则所有框都在普通流中定位.也就是说,普通流中的元素的位置由元素在 (X)HTML 中的位置决定. 块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来. 行内框在一行中水平布置.可以使用水平内边距.边框和外边距调整它们的间距.但是,垂直内边距.边框和外边距不影响行内框的高度.由一行形成的水平框称为行框(Line Box),行框的高度总是足以容纳它包含的所有行内框.不过,设置行高可以增加