css继承和层叠
在前面介绍了如何利用文档结构和css选择器为元素应用各种丰富的样式,今天来好好聊聊css的层叠和继承,先说说概念。
继承:一个元素向其后代元素传递属性值所采用的机制,说的通俗点,就是元素的某些属性可以通过继承从而传递给子元素的。
如:
<p><span>测试继承</span>这里不是span中的内容</p>
p{color:red},这里便会看到p元素和审判元素中的文字都变为红色,因为p元素的属性被span继承过来了。但是有的属性是无法通过继承来传递的,
如border就不会通过继承获得。其实继承很好理解,但要配合层叠来一起理解。
层叠:确定一个元素究竟该用哪些样式时,就需要把继承和声明的特殊性拿来一起考虑,从而该启用哪一个css样式,这个过程就被称为层叠。
上面提到了特殊性,那我们就来重点看看。
先抛出一个问题,下面2对规则,哪条会获胜?
h1{color:red}
body h1{color:blue}
h2{color:red}
h2.color{color:green}
上面的2对规则中,显然只能有一个胜出,然而哪个该胜出嘞?答案就在每个选择器的特殊性。
一个选择器的具体特殊性如下:
1.对于规则中给定的每个ID属性值,特殊性加0,1,0,0
2.对于规则中每个类选择符合属性选择符以及伪类,特殊性加0,0,1,0
3.对于规则中每个元素和伪元素,特殊性0,0,0,1
4.结合符和通配符对特殊性没有任何贡献。
5.内联样式的特殊性加1,0,0,0
6.继承的属性没有特殊性,甚至连0特殊性都没有,所以要低于通配符的。
7.!important总会胜出。
所以对于上面的两组规则就有了结果:
h1{color:red} 0,0,0,1
body h1{color:blue} 0,0,0,2
h2{color:red} 0,0,0,1
h2.color{color:green} 0,0,1,0
所以red和green会生效。
于是,层叠的规则如下:
1.找出你代码里面所有的选择符。
2.规则的显示权重排序和起源排序,标记!important的样式最优先,且有三种起源:制作者,读者,用户代理。
3.元素声明的特殊性排序。
4.元素声明的出现顺序排序。
css继承和层叠的更多相关文章
- CSS继承、层叠和特殊性
1.继承 (1)样式应用于某个特定的HTML标签元素,而且应用于其后代. (2)但某些标签不适用,如border: (3)例子:p{color:red;}设置了颜色 <p class=" ...
- CSS语法、选择器、继承、层叠
行内样式(内联样式) <h1 style="color:red;font-size:20px;">css行内样式</h1> 内部样式表(嵌入样式) < ...
- CSS系列:CSS的继承与层叠特性
1. CSS的继承特性 所有的CSS语句都是基于各个标记直接的继承关系,CSS继承是指子标记会继承父标记的所有样式风格,并可以再父标记样式风格的基础上再加以修改,产生新的样式,而子标记的样式完全不会影 ...
- CSS特性: 继承 和 层叠
在css中也存在着继承关系,与面向对象的编程语言不同,css的继承很简单,而且主要指的是在CSS盒模型中,外围的盒子的样式会被内部所包含的盒子所继承.具体来了解一下. HTML元素之间存在一个”树型“ ...
- css中的继承、层叠、样式优先级机制
一.继承与层叠:
- HTML+CSS学习笔记(9)- CSS的继承、层叠和特殊性
标签:HTML+CSS 继承 CSS的某些样式是具有继承性的,那么什么是继承呢?继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代.比如下面代码:如某种颜色应用于p标签,这 ...
- CSS学习摘要-层叠和继承
当有多个选择器作用在一个元素上时,哪个规则最终会应用到元素上? 其实这是通过层叠机制来控制的,这也和样式继承(元素从其父元素那里获得属性值)有关. 元素的最终样式可以在多个地方定义,它们以复杂的形式相 ...
- CSS中的层叠、特殊性、继承、样式表中的@import
CSS中的层叠.特殊性.继承.样式表中的@import 层叠 CSS有一个机制是层叠,层叠可以理解为对样式的覆盖,优先性为: 网站开发者的样式表 用户样式(通过设置浏览器的显示选项) 浏览器默认的样式 ...
- CSS 三大特性 层叠 继承 优先级
css三大特性 层叠性: 如果一个属性通过两个相同选择器设置到同一个元素上,相同的属性就会出现冲突,那么这个时候一个属性就会将另一个属性层叠掉,采用的是就近原则 继承性: 子标签会继承父标签的某些样式 ...
随机推荐
- 记录Tomcat8.5文件上传,文件权限无法访问
部署一个服务,文件上传本地可以,但是在Linux上通过docker发布到容器上,文件上传后,没有权限访问,查了好久才发现是Tomcat8.5的问题,低版本没有这个问题,现记录下. tomcat/bin ...
- 监听器的使用例子 ServletContextListener
之前一直对监听知识有个概念,最近业务需要用到了才真正有点了解了监听器的好处. web项目的监听事件与监听器: ServletAPI中的6个事件类: ServletContextEvent:该类表示上下 ...
- L183 Chinese company unveils first satellite for free WiFi
A Chinese internet technology company unveiled the first satellite in a constellation plan to provid ...
- ZetCode PyQt4 tutorial Drag and Drop
#!/usr/bin/python # -*- coding: utf-8 -*- """ ZetCode PyQt4 tutorial This is a simple ...
- Python windows serial
Python windows serial 一.参考文章: Serial port programming http://www.cnblogs.com/2zhyi/p/3405339.html py ...
- 20155234 2016-2017-2 《Java程序设计》第8周学习总结
20155234 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 java.util.loggging包提供了日志功能相关类与接口. 使用日志的起点是Logg ...
- MySql登陆密码忘记了 怎么办?
MySql登陆密码忘记了 怎么办?root密码:连root密码忘记没用root进修改mysql数据库user表咯 root密码: 方法一:MySQL提供跳访问控制命令行参数通命令行命令启MySQL服务 ...
- Java多线程编程核心技术,第三章
1,notify的同步块完了,才会运行wait的同步块 2,interrupt()不是静态方法,用在wait的线程上会有InteruptException,锁也会被释放 3,notify()唤醒的线程 ...
- 一步搞定私有Git服务器部署(Gogs)
http://www.jianshu.com/p/424627516ef6 零.安装 Docker 和 Compsoe 首先安装 Docker: $ curl -sSL https://get.doc ...
- CCFlow SDK模式开发(有比较详细的代码,以服务的形式与ccflow数据库进行数据交互)
http://www.cnblogs.com/s0611163/p/3963142.html 需求: 1.业务数据要保存在我们自己的数据库里 2.CCFlow有保存草稿的功能,但是领导要求每个 ...