谈到层叠机制,首先我们要知道什么是声明冲突。

  声明冲突有三个条件:①多个选择器选中同一个元素;②声明块里的属性相同;③属性的属性值不同。同时满足这三点时就会产生声明冲突。比如下图html代码:

     <div>
<p><span>hello word</span></p>
</div>

他的css文件如下:

 span{
color:red;
}
p>span{
color:blue;
}
div>p>span{
color:green;
}

此时就会产生声明冲突。

  浏览器只会挑其中一个选择器中的样式来渲染网页,关于如何挑选就是层叠机制的内容。

  层叠机制:是一种机制,当发生声明冲突时自动触发,浏览器通过层叠机制解决声明冲突。主要内容为:

  1、首先比较样式表的优先级。

    样式表的优先级受来源和重要性影响。

    来源:作者样式表>浏览器默认样式表

    重要性:针对作者样式表而言的,有!important>无重要样式声明

    因此作者重要>作者普通>浏览器默认,比如:

     <div>
<p>
<span>
<a href="http://www.baidu.com">百度一下</a>
</span>
</p>
</div>
 a{
color: green!important;
} a{
color:red;
}

a标签浏览器默认为蓝色,普通定义了样式为红色,重要样式定义了绿色,因此最终被渲染成绿色。

   

  2.比较特殊性,也叫权重or特指度。

    规则:行内样式>ID选择器>类、伪类、属性选择器>元素、伪元素选择器>通配符选择器

    当发生声明冲突且他们优先级相同时,我们比较特殊性,通过上述规则,我们对每一个样式会产生一个四元数组(a,b,c,d),其中:

     a:行内样式为1,否则为0

     b:ID选择器的个数

     c:类、伪类、属性选择器的个数

     d:元素、伪元素选择器的个数

    依次从前往后比,大的胜出,一旦胜出,无需再比较之后的数值。例如:

  页面中的一个a元素:

     <div class="main">
<div>
<p id="nav">
<span class="home">
<a href="http://www.baidu.com">百度一下</a>
</span>
</p>
</div>
</div>
 /*样式1*/
a{
color: green;
}
/*样式2*/
.foo{
color:yellow;
}
/*样式3*/
#bar{
color: red;
}
/*样式4*/
.main>div #nav *.home a:link{
color:pink;
}

样式1:  0,0,0,1; 

样式2:  0,0,1,0;

样式3:  0,1,0,0;

样式4:  0,1,3,2;  

    3. 比较源次序。当优先级和特殊性都一样时,书写顺序上,后写的会覆盖先写的。

  以上,就是层叠机制的主要内容。

  以下,写几个常见的误区;

  误区一:认为ID选择器适用范围最小,因此特殊性最高。这种说法是错的,应该按照“四元数组”法判断。

  误区二:

     <div id="bar">
<a href="http://www.baidu.com">百度一下</a>
</div>
 /*样式1*/
#bar{
color: red;
}
/*样式2*/
a{
color: green;
}

  认为a标签最后是红色。这里其实样式1和样式2并没有发生声明冲突,由于浏览器中对a元素有默认的样式,作者样式表也写了对a元素的样式,因此没有发生继承。产生声明冲突的是浏览器的默认样式和作者样式表中的样式2,优先级比较知道样式2胜出,无需比较特殊性。

    欢迎补充。

  

    

关于CSS层叠机制的更多相关文章

  1. css考核点整理(二)-css层叠机制

    css层叠机制 外边距重叠就是margin-collapse. 在CSS当中,相邻的两个盒子(可能是兄弟关系也可能是祖先关系)的外边距可以结合成一个单独的外边距.这种合并外边距的方式被称为折叠,并且因 ...

  2. css层叠机制说明

    css通过建立与文档的关联而实施效果.文档结构重要性不言而喻,对于建立良好的内容索引.提高可维护性.较好的可访问性:另,利于css选择器选择.继承机制. 概要地讲,层叠机制是处理对文档上应用样式时解决 ...

  3. 三.CSS层叠机制

    概述 层叠就是对样式的层叠.是某种样式在样式表中逐层叠加的过程.让浏览器对某个标签特定属性值的多个来源,最终确定使用那个值.层叠是整个CSS的核心机制. HTML文档样式的来源 1.浏览器默认样式,每 ...

  4. CSS引用方式及样式层叠机制

    CSS引用方式有3种,三种分别为:外部引入.内部引入.行内样式,下面一 一进行介绍. 1.外部引入:CSS代码在一个独立的文件中,HTML通过Link标签引入到页面. 代码格式:<link re ...

  5. CSS中的样式层叠机制Cascade

    CSS中的样式层叠机制Cascade 一.样式冲突   样式冲突是CSS渲染过程要解决的一个关键问题,样式冲突主要由两个原因造成: 元素包含了不同对象所赋予的样式:浏览器.用户.作者.其中,浏览器样式 ...

  6. 层叠机制和继承的概念以及CSS中选择器的优先级

    层叠机制: 一个元素的某个特定的样式属性可能来自行间的style属性.内联样式表或者外部引入的样式表,以及浏览器自定义的样式,还有就是继承自父元素的样式,但是最终只会选择其中的某一个来表示,这个选择的 ...

  7. CSS层叠

    前面的话 层叠样式表CSS最基本的一个特性就是层叠.冲突的声明通过层叠进行排序,由此确定最终的文档表示.而这个过程的核心就是选择器及其相关声明的特殊性.重要性.来源及继承机制.本文将详细介绍CSS层叠 ...

  8. css层叠规则,优先级算法

    前言 层叠样式表CSS最基本的一个特性就是层叠.冲突的声明通过层叠进行排序,由此确定最终的文档表示.而这个过程的核心就是选择器及其相关声明的特殊性.重要性.来源及继承机制.本文将详细介绍CSS层叠 特 ...

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

    CSS层叠规则: 1.找出所有相关的规则,这些规则都包含与一个给定元素匹配的选择器. 2.按权重(!important)和来源对应用到给定元素的所有声明进行排序. 3.按特殊性对应用到给定元素的所有声 ...

随机推荐

  1. Java框架spring 学习笔记(一):SpringBean、ApplicationContext 容器、BeanFactory容器

    Spring容器是Spring框架的核心,容器可以创建对象并创建的对象连接在一起,配置和管理他们的整个生命周期.Spring 容器使用依赖注入(DI)来作为管理应用程序的组件,被称为 Spring B ...

  2. 查询sqlserver数据库表的记录数

    SELECT a.name, b.rows FROM sysobjects AS a INNER JOINsysindexes AS b ON a.id = b.idWHERE (a.type = ' ...

  3. 网站改版应对google

    客户要求修改网站,这会给我们带来问题!为了保留他的网站权重和关键字排名,我们必须在做网站修改工作之前分析他原来网站的连接结构和标题,这样我才能更好地保证他原来网站的整体权重不会有大的变化!以下是我们根 ...

  4. Excel vba:批量生成超链接,添加边框,移动sheet等

    Excel vba 操作 批量生成sheet目录并添加超链接 Sub Add_Sheets_Link() 'Worksheets(5)为清单目录页 '在sheet页上生成sheet页名字并超链接 To ...

  5. Exp3 免杀原理与实践 20165110

    Exp3 免杀原理与实践 20165110 一.. 实践内容 1.正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),veil-evasion(0.5分),加壳工 ...

  6. hibernate session.createSQLQuery(sql); 通过命令删除

    @Override public boolean deleteBySql(String sql) { Session session = getSession(); @SuppressWarnings ...

  7. Oracle 12c 创建新的数据库实例、用户

    前提:安装好了Oracle 12c数据库,已有一个数据库实例xe,登录用户/密码:system/oralce 我用的是docker安装的Oracle 12c的实例: docker run --name ...

  8. LINUX中printf与echo的区别

    (1)首先echo是回显,即代表回车显示,是自带换行的:而printf只是打印出来,没有换行(2)echo只是回显没有变量替换功能:printf是有的举例:假如我们定义好变量a='hello worl ...

  9. 20165213 Exp5 MSF基础应用

    Exp5 MSF基础应用 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实践,如ms08_067; (1分) 1.2 一 ...

  10. Centos7下修改固定IP

    1.直接关闭 NetworkManger 服务就好了, service NetworkManager stop, 并且禁止开机启动 chkconfig NetworkManager off 如何查看c ...