CSS选择器的特殊性和LOVE HA
在CSS中当几个相同的选择器对同一个元素有不同的规则时,该怎么应用这些规则呢?
答案就是:CSS特殊性(CSS specificity)
选择器特殊性有选择器本身组成,特殊性由4个数值表述:0, 0, 0, 0,具体特殊性如下:
- 对于内联样式声明的特殊性时,加1, 0, 0, 0
- 对于选择器中有给定的ID属性值时,加0, 1, 0, 0
- 对于选择器中有给定的类属性值、属性选择或伪类,加0, 0, 1, 0
- 对于选择器中有各个给定的元素和伪元素时,加0, 0, 0, 1
- 结合符和通配符对特殊性没有任何贡献即0, 0, 0, 0
从左到右,属性权重越来越低,1,0,0,0大于任何第一个0开头的特殊值如0,0,0,13
特殊值实例: #id /*0,1,0,0*/
.className {} /*0,0,1,0*/
[attr] /*0,0,1,0*/
[attr="value"] /*0,0,1,0*/
element {} /*0,0,0,1*/
h1{} /*0,0,0,1*/
html > body td[id="totals"] tr ul > li {声明} /*0,0,1,5*/
li#answer {声明} /*0,1,0,1*/ (winner)
h1#selec{声明} /*0,1,0,1*/
<h1 style="color: red">element</h1> /*1,0,0,0*/ (winner)
内联样式特殊性最高
重要性:
某个样式声明非常重要,可以在声明的结束分号之前加上!important来标志。
p.class {color: #222 !important} /*winner*/
#id {color: #333首先,!important必须放到声明最后的分号之前,其次加了!important的声明与非重要声明分开考虑,
且声明冲突时,胜出的总是重要声明。
继承
继承没有特殊性
*color{color: red}
h1#page-title {color: green} <h1 id="page-title">out em<em>in em</em>out em</h1> 结果:
out em in em out em通配选择符具有0特殊性,而继承无特殊性,所以em内为绿色
层叠
如果元素选择符的特殊性相同:
- 按照!important来排序: 读者的重要声明 > 创作人员的重要声明 > 创作人员的正常声明 > 读者正常声明 > 用户代理声明
- 按照特殊性排序,较高的特殊性权重大于低的权重
- 按照出现顺序,后出现的权重大,样式表中的导入样式表在前,主样式表在后。
正式由于这种顺序,才有了LOVE HA,一般链接样式按顺序link-visited-hover-active。(LVHA)来排序。
:link {}
:visited {}
:hover {}
:active {}因为有相同的特殊性,0,0,1,0。所以与元素匹配的最后一个选择器才会胜出。
假如不按照常用的顺序
:active {}
:hover {}
:link {}
:visited {}一个链接的link和visited两种样式肯定有一种会匹配,所以:active和:hover会被覆盖。
:link {}
:hover {}
:visited {}
:active {}
这个顺序下,被访问过的样式都不会有 :hover 样式,因为会被:visited覆盖。 也可以把伪类链接起来,所以可不必担心这些问题
:link {}
:visited {}
:link :hover {}
:visited :hover {}
每个规则都有唯一的链接状态所以不会冲突。
CSS选择器的特殊性和LOVE HA的更多相关文章
- CSS选择器的特殊性
在我们为元素添加样式的时候,或多或少会出现一个元素会有几个不同规则的样式.有#id的,有.class,直接标签元素的,还有各种组合起来的选择器.那CSS到底如何解决这些冲突呢,我们这次专门来探讨一下. ...
- css选择器的特殊性值
今天从前端那拿来写好的页面,就开始动工,首先,照旧处理导航栏高亮的问题, 说到处理高亮的问题,不同的人会有不同的方法,比如: //类名为nav的元素下的第n个a元素 .nav a:nth-of-typ ...
- 深入理解CSS选择器优先级的计算
选择器的优先级关系到元素应用哪个样式.在CSS2.1的规范(http://www.w3.org/TR/2009/CR-CSS2-20090908/cascade.html#specificity)中是 ...
- css优先级之特殊性
在前端开发的时候,css构建样式规则,这个时候我们会遇到一个问题:当我们对同一个元素做多个样式规则,其中发生了冲突的时候,css是如何选择最终呈现的样式 如下: div{ color:red; } d ...
- CSS选择器特殊性与重要性
特殊性 在编写CSS代码的时候,我们会出现多个样式规则作用于同一个元素的情况,例如 <!-- HTML --> <header> <nav class="nav ...
- CSS选择器与CSS的继承,层叠和特殊性
什么是选择器?选择器{样式;},在{}之前的部分就是"选择器","选择器"指明了{}中的"样式"的作用对象,也就是"样式" ...
- CSS选择器中的特殊性
我们来看一下一个简单的例子: <!DOCTYPE html><html lang="en"><head> <meta charset=&q ...
- CSS选择器的权重与优先规则?
我们做项目的时候,经常遇到样式层叠问题,被其他的样式覆盖,或者写的权重不高没效果,对权重没有具体的分析,做了一个总结. css继承是从一个元素向其后代元素传递属性值所采用的机制.确定应当向一个元素应用 ...
- css选择器万年不变的优先级和权重
我们在使用CSS对网页元素定义样式时经常会遇到这种情况:要对一般元素应用一般样式,然后在更特殊的元素上覆盖它们.那么我们怎么样来保证我们所新定义的元素样式能覆盖目标元素上原有的样式呢? 在CSS中,会 ...
随机推荐
- HTML5 history
引入history.pushState的来龙去脉 大家都知道web2.0以来,大家都喜欢使用ajax来请求数据,提高用户体验,但是传统的ajax可以无刷新改变页面内容,但无法改变页面URL,无刷新的改 ...
- Ubuntu学习总结-04 搭建JAVA开发环境
JAVA开发环境是一种跨平台的程序设计语言,可以在windows.LINUX等操作系统上进行开发. 1 下载JDK 从以下地址下所需的jdk安装包 . http://www.oracle.com/te ...
- tomcat并发
Tomcat的最大并发数是可以配置的,实际运用中,最大并发数与硬件性能和CPU数量都有很大关系的.更好的硬件,更多的处理器都会使Tomcat支持更多的并发. Tomcat默认的HTTP实现是采用阻塞式 ...
- 使用Navicat导入导出表的数据做测试(转载)
当我们对MySQL数据库进行了误操作,造成某个数据表中的部分数据丢失时,肯定就要利用备份的数据库,对丢失部分的数据进行导出.导入操作了.Navicat工具正好给我们提供了一个数据表的导入导出功能. 1 ...
- Canvas绘画功能(待补充)
由于项目的前端需要用户手绘输入,所以我们利用Canvas控件做绘画面板,并且实现了许多功能,包括手绘笔画,清空画板,上传手绘图,下载手绘图,记录用户笔画,上传背景图.以后有时间都写到这篇博客中,今天晚 ...
- 设计模式-观察者模式(List列表维护观察者)
namespace ConsoleApplication1{ interface IObserver { void ReceiveMsg(string msg); } class Observer : ...
- CentOS配置163的yum源
entOS系统自带的更新源的速度在国内非常慢,在国内为了让CentOS6使用速度较快快的YUM更新源,建议选择163(网易)的更新源. 1.下载repo文件wget http://mirrors.16 ...
- 英文分词算法(Porter stemmer)
http://blog.csdn.net/whuslei/article/details/7398443 最近需要对英文进行分词处理,希望能够实现还原英文单词原型,比如 boys 变为 boy 等. ...
- OC面向对象特性: 继承
基础知识 1.标识符是有字母,数字,下划线组成的. 2.首字母只能是字母,下划线,不能为数字. 3.标识符要做到见名之意. 4.标识符不能使用已定义的关键字和预定义标识符. 继承 继承:子类可以直接访 ...
- Java http方式提交短信到短信网关
URL url = new URL("短信网关url"); 一般短信内容需要用URLEncoder.encode()编码一下 HttpURLConnection httpCon = ...