css优先级和层叠
css优先级和层叠
1、优先级
计算方法:
a、行内样式
b、id选择器的数量
c、类,伪类和属性选择器的数量
d、标签选择器和伪元素选择器的数量
假设a,b,c,d的权重分别为1000,100,10,1
那么有:

2、css层叠
了解了css的优先级,这时候我们就不得不提css中的层叠(此时考虑的还不涉及到z-index),我们应该知道如下几点:
1、当优先级相同,属性名相同时,后面的样式会覆盖前面的样式
2、当优先级相同,属性名有不同时,不同的属性会合并,相同的属性依然按照前面的规则
3、当优先级不同,属性名相同时,优先级高的会覆盖优先级低的
4、当优先级不同,属性名有不同时,不同的属性会合并,相同的属性依然按照前面的规则
下面我们通过这个例子来解释:
<div><p class="demo">css层叠</p></div>
p{
color: blue;
text-align: left;
font-weight: bold;
}
p.demo{
color: red;
text-align: right;
}
p:first-child{
color: yellow;
}
我们先来探究color属性,color最终的颜色是黄色,原因:首先p标签选择器的权重明显小于后面的两种选择其器,其次p.demo和p:first-child分别是类选择器和伪类选择器,它们的权重是一样的,考虑css层叠,后面的样式会覆盖前面的样式;同理我们也很容易看出,最终的text-align的值为right;至于font-weight的值,究竟有还是没有呢?再看我没呢前面列出来的css层叠第四点,不同的属性会合并,那么font-weight最终的值就是bold。
那么我们在具体实践中究竟该如何改变我们的样式呢?
方法一:改变先后顺序
方法二:提升选择器的优先级
方法三:通过!important来提升权重(前面的方法都不可用时再考虑用这种方法)
案例如下:

如图:demo中的示例文字的颜色为红色,我们想修改它的颜色为黑色办?
方法一:改变先后顺序
.special{ color: red; }
.tip{ color: black; }
方法二:提升选择器的优先级
p.tip{ color: black; }
.special{ color: red; }
方法三:加上!important
.tip{ color: black !important; }
p.special{ color: red; }
扩展,我们将div中的p标签里面加上id="special",将样式里面修改为:
.tip{ color: black !important; }
p#special{ color: red; }
结果仍显示黑色,这是为什么呢?前面的文章中有介绍过!important是最高权重,对的,就是如此。
注意:不要混淆了!important和@import,@import详情见@import和link的区别
css优先级和层叠的更多相关文章
- CSS三大特性(继承、优先级、层叠)之个人见解
首先声明一下CSS三大特性——继承.优先级和层叠.继承即子类元素继承父类的样式,比如font-size,font-weight等f开头的css样式以及text-align,text-indent等t开 ...
- CSS 三大特性 层叠 继承 优先级
css三大特性 层叠性: 如果一个属性通过两个相同选择器设置到同一个元素上,相同的属性就会出现冲突,那么这个时候一个属性就会将另一个属性层叠掉,采用的是就近原则 继承性: 子标签会继承父标签的某些样式 ...
- CSS:权重和层叠规则决定了其优先级
首先,给大家看一篇关于CSS优先级的示例:http://www.ido321.com/76.html 一.基本的优先级规则 比较同一级别的个数,数量多的优先级高,如果相同即比较下一级别的个数,至于各级 ...
- css优先级计算规则
原文:css优先级计算规则 最近面试了一些求职者,我问css优先级计算规则是怎样的?答曰ID优先级>class>元素选择器,外联样式优先级低于内联样式,内联样式优先级低于行间样式,然后就没 ...
- CSS优先级的及其衡量标准CSS权重
一.背景 CSS有三大特性:层叠性.继承性.优先级. 而我们在给CSS定义样式的时候,经常出现两个及以上的规则应用在同一元素上,单该元素最终在浏览器呈现的效果是应用的哪个规则呢?这就要考虑优先级的问题 ...
- CSS结构和层叠
每个合法的文档都会生成一个文档树,从而能根据元素的祖先,属性,兄弟元素等创建选择器来选择元素.有了这个结构树,选择器才能起作用,这也是CSS继承的核心.继承是从一个元素向其后代元素传递属性值所采用的机 ...
- CSS中的层叠、特殊性、继承、样式表中的@import
CSS中的层叠.特殊性.继承.样式表中的@import 层叠 CSS有一个机制是层叠,层叠可以理解为对样式的覆盖,优先性为: 网站开发者的样式表 用户样式(通过设置浏览器的显示选项) 浏览器默认的样式 ...
- 前端css优先级以及继承
1.css优先级以及继承 css具有两大特性:继承性和层叠性 继承性 继承:给父级设置一些属性,子级继承了父级的该属性,这就是我们的css中的继承. 有一些属性是可以继承下来 : color . fo ...
- 前端 CSS 继承性和层叠性
CSS有两大特性:继承性和层叠性 前端 CSS的继承性 前端 CSS层叠性 CSS选择器优先级 前端 CSS 优先级 样式设置important
随机推荐
- 【Cocos2d-x】VS2012开发2dx无法解析的外部符号解决记录(第一篇)【转】
come from http://acoder.me/cocos2d-unresolved-external-symbol.html 看到cocos2d-x带了扩展包,心动的想尝试下,以下分享下我使用 ...
- ldr和adr在使用标号表达式作为操作数的区别
ARM汇编有ldr指令以及ldr.adr伪指令,他门都可以将标号表达式作为操作数,下面通过分析一段代码以及对应的反汇编结果来说明它们的区别. ldr r0, _start adr r0 ...
- python查找算法的实现-二分法
1.算法:(设查找的数组期间为array[low, high]) (1)确定该期间的中间位置K(2)将查找的值T与array[k]比较.若相等,查找成功返回此位置:否则确定新的查找区域,继续二分查找. ...
- sqlite 的比较等运算是根据不同的值而不同的,并不是根据的字段类型,因为 sqlite 是弱类型字段
sqlite 的比较等运算是根据不同的值而不同的,并不是根据的字段类型,因为 sqlite 是弱类型字段 --------------------------------------------- ...
- How To Create a Personal Balance Sheet
Calculating your personal net worth is the best way to know exactly what your starting point is, in ...
- android studio出现Error:compileSdkVersion android-x requires compiling with JDK 7问题
初装Android studio的童鞋可能或多或少会存在一些问题,比如出现Error:compileSdkVersion android-x requires compiling with JDK 7 ...
- Run same command on all SQL Server databases without cursors
original: https://www.mssqltips.com/sqlservertip/1414/run-same-command-on-all-sql-server-databases-w ...
- Entityframework修改某个字段
public void ChangePassword(int userId, string password) { var user = new User() { Id = userId, Passw ...
- linux ss 网络状态工具
ss是Socket Statistics的缩写 查看网络状态,经常用的命令: watch ss -lnt ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP soc ...
- MFC一个类访问另一个类成员对象的成员变量值
MFC中一个类要访问另外一个类的的对象的成员变量值,这就需要获得原来那个类对象的指针,其实有好几种方法都可以实现. 比如维护一个单例模式.设置静态变量等等.我们这里举个列子,实现多个类之间的相互访问. ...