[05] css优先级
1.优先级计算规则(特殊性)
在css中,有不同的方式编写css,如果想给同一个标签设置样式,选择器的写法有很多种,那么当多个样式都应用于同一个标签,标签优先选择哪个样式呢?按照以下规则:
现有 0,0,0,0 四个位置
第一个0位置: 表示内联样式(标签上的style属性)1,0,0,0
第二个0位置: 表示id选择器 0,1,0,0
第三个0位置: 表示类选择器,属性选择器或伪类 0,0,1,0
第四个0位置: 表示标签和伪元素 0,0,0,1
1.1实例
一个样式的位置优先级最终由选择器计算出来的总分最高的匹配,例如下面的实例:
// 0,0,0,1
h1 {
color: red;
}
//0,0,0,2
p h1 {
color: blue;
}
//0,0,1,0
.h1Class {
font-size: 12px;
}
//0,0,1,0
*.h1Class {
font-size: 20px;
}
//0,0,2,2
p.h1Class em.dark {
color: maroon;
}
//0,1,0,0
#pId {
color: yellow
}
// 0,1,1,1
div#h1Class *[href] {
color: silver;
}
// 0.0.1.7 (这里的id属性选择器只贡献了0.0.1.0,和id选择器不一样)
html > body table tr[id='totals'] td url > li {
color: maroon;
}
当多个选择器样式不冲突的时候,会合并样式应用到标签。
1.2 重要性
当某个样式非常重要,可以使用!important标记。大于上面计算方式的一切样式.下面的样式颜色为蓝色
<h1 style="color:red;">hello</h1> //css
h1 {
color: blue!important;
}
2.样式层叠后的优先级
2.1 用户代理三种css来源
我们先弄清楚创作人员,读者和用户代理三种css来源。
创作人员(author's+style):如果你是一个前端开发者,那么你写的那些样式就叫做创作人员样式。
用户代理样式(agent's+style),用户代理也就是我们通常所说的浏览器(IE、Firefox等等),这些浏览器会提供一些默认的样式,比如IE浏览器中,一个纯粹由html代码构成的网页里,我们会发现超链接会带有一个蓝色的前景色,这其实就用户代理样式,借用一些插件我们可以方便的查看这些默认样式(比如Firefox中的Web+developer)
读者样式(reader's+style):所谓读者自然就是浏览网页的用户,有些时候这些用户里可能会有人不满意网页的配色,或者字体大小,这时候他们就是通过浏览器提供的接口为网站添加读者样式。
2.2 层叠优先级判断
1.找到应用于同一个元素的所有css规则
2.按照权重排序, 标志!important最高,没有!important的情况,创作人员> 读者样式>用户代理。下面是权重由高到低
a.读者的重要声明(!important)
b.创作者的重要声明(!important)
c.创作者的正常声明
d.读者的正常声明
e.用户代理声明
3.当上面的计算方式结果一样,按照特殊性(特殊性的优先计算规则)排序
<p id="bright">hello,world</p> //权重排序:都是创作者,但是特殊性0,1,0,1
p#bright {
color: silver;
}
//权重排序:都是创作者,但是特殊性0,0,0,1
p {
color: black;
}
4.按出现顺序,越在后面的,权重越大
//例1: 两个规则的权重,来源和特殊性完全相同,那么谁在后面则胜出 //失败
h1 {
color: silver;
}
//胜出
h1 {
color: blue;
}
// 例2: a链接的伪元素选择器方式。权重,来源和特殊性都是一样的。特殊性为0,0,1,0,因此在点击‘未访问’的链接时,匹配:link,:hover,:active,而最后一个胜出 :link { color: blue;}
:visited { color: purple;}
:focus: { color: black;}
:hover { color: red;}
:active { color: orange} //按照这种顺序不会显示:hover或:active的样式。因为:link和:visited出现在后面。链接要么是已访问,要么是未访问,所以:link :visted会覆盖:hover的规则
:active { color: orange}
:focus: { color: black;}
:hover { color: red;}
:link { color: blue;}
:visited { color: purple;}
[05] css优先级的更多相关文章
- css选择器及css优先级
三个css选择器:id选择器#test1{ }.class选择器.test2{ }.标签选择器div{ }对三个div:<div>我是普通div</div>.<div i ...
- 关于CSS的优先级,CSS优先级计算
原则一: 继承不如指定原则二: #id > .class > 标签选择符原则三:越具体越强大原则四:标签#id >#id ; 标签.class > .class CSS优先级权 ...
- css 优先级 机制
多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况. 一般情况下,优先级如下: (外部样式)External style sheet ...
- z-index、display、selector选择器优先级css优先级面试用到
z-index:控制元素叠放顺序,哪个z-index数值越大,那个优先被叠放在上面. relative.absolute.fixed这三种情况可以使用z-index. static不可以使用. dis ...
- css优先级和层叠
css优先级和层叠 1.优先级 计算方法: a.行内样式 b.id选择器的数量 c.类,伪类和属性选择器的数量 d.标签选择器和伪元素选择 ...
- 使用background和background-image对CSS优先级造成影响
在写一个关于背景图的CSS时候发现一个奇怪的现象, 原图: 如下代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...
- CSS优先级算法是如何计算?
CSS的specificity特性或非凡性,它是一个衡量css优先级的一个标准, 既然的标准就有判定规定和计算方式,specificity用一个四位数来表示, 更像四级从左到右,左的最大级,一级大于一 ...
- CSS优先级总结(转载)
样式的优先级 多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况. 一般情况下,优先级如下: (外部样式)External styl ...
- css优先级计算
主要的css选择器有id,class,tag,[],:,::等,而通常需要对其优先级进行判断的有id,class,tag,另外内联样式和!important也和css的优先级有关系. 如果将这五种不同 ...
随机推荐
- HDU暑假多校第三场H.Monster Hunter
一.题意 给定一个树状地图,每个树节点上有一只怪物,打死一只怪物的过程中将会消耗A点HP,打死之后将会获得B点HP.因为树状结构,所以每只怪物必须先打死父节点的怪兽之后在打死子节点的怪物.现在,给定每 ...
- 8 TFTP代码详解 协议写在程序中
1.版本1:发送请求 # -*- coding:utf-8 -*- import struct from socket import * #0. 获取要下载的文件名字: downloadFileNam ...
- linux内存
在Linux的世界中,从大的方面来讲,有两块内存,一块叫做内存空间,Kernel Space,另一块叫做用户空间,即User Space.它们是相互独立的,Kernel对它们的管理方式也完全不同 驱动 ...
- 使用JDK自带的keytool工具生成证书
一.keytool 简介 keytool 是java用于管理密钥和证书的工具,它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及 ...
- 深度可分卷积(Depthwise Separable Conv.)计算量分析
上次读到深度可分卷积还是去年暑假,各种细节都有些忘了.记录一下,特别是计算量的分析过程. 1. 标准卷积和深度可分卷积 标准卷积(MobileNet论文中称为Standard Convolution, ...
- java设计模式之观察者模式以及在java中作用
观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式.源-监听器(Source/Listener)模式或从属者(Dependen ...
- Jquery append()总结(一) 转载
转载自:http://dushanggaolou.iteye.com/blog/1173457 append(content) /** * 向每个匹配的元素内部追加内容. * 这个操作与对指定的元素 ...
- CCS Font 知识整理总结
总是搞不懂 CCS 中如何正确的使用字体,这下明白了. 1.什么是 font-face font-face 顾名思义,就是文字的脸.字体是文字的外在形式,就是文字的风格,是文字的外衣.比如行书.楷书. ...
- DP入门(4)——线性结构上的动态规划
一.最长上升子序列(LIS) 给定n个整数A1,A2,…,An,按从左到右的顺序选出尽量多的整数,组成一个上升子序列(子序列可以理解为:删除0个或多个数,其他数的顺序不变).例如序列1,6,2,3,7 ...
- Python中enumerate函数用法详解
enumerate函数用于遍历序列中的元素以及它们的下标,多用于在for循环中得到计数,enumerate参数为可遍历的变量,如 字符串,列表等 一般情况下对一个列表或数组既要遍历索引又要遍历元素时, ...