常见CSS选择器的权重和优先级
一、常见CSS选择器
【元素选择器】
1、通配选择器:*(匹配所有元素)
a、效率不高,页面上的标签越多,效率越低,所以页面上最好不要出现这个选择器
2、标签选择器:li(匹配标签为li的元素)
a、所有标签都能够当做选择器,比如body、h1、dl、ul、span等等
b、不管这个标签藏的多深,都能够被选择上
c、选择的是所有的,而不是某一个。所以是共性,而不是特性
3、ID选择器:#content(匹配ID属性值等于content的元素)
4、类选择器:.list(匹配class属性包含list的元素)
a、class可以重复,也就是说,同一个页面上可能有多个标签同时属于某一个类
b、同一个标签可以同时携带多个类,多个类用空格隔开,多个样式有冲突的,以css中后出现的为准
c、不要去试图用一个类名,把某个标签的所有样式写完。这个标签要多携带几个类,共同造成这个标签的样式
d、每一个类要尽可能小,有“公共”的概念,能够让更多的标签使用
【关系选择器】
1、后代选择器:#content h3(匹配ID为content的元素内所有的h3元素)
a、空格就表示后代,强调一下:选择的是后代,不一定是儿子
b、当要把某一个部分的所有的什么,进行样式改变,就要想到后代选择器
2、子元素选择器:#content>h3(匹配ID为content的元素子级的h3元素)
3、交集选择器:h3.content(匹配class为content的h3元素)
a、交集选择器没有空格
b、交集选择器可以连续交(一般不要这么写)
c、交集选择器,我们一般都是以标签名开头,比如div.haha 比如p.special
4、并集选择器(分组选择器):h1,h2(匹配所有的h1和h2元素)
5、相邻选择器:h1+h2(匹配 h1 元素之后紧跟的 h2 元素)
6、兄弟选择器:h1~h2(匹配 h1 元素之后所有的 h2 元素)
【属性选择器】
1、a[class]:匹配具有 class 属性值的 a 的元素
2、a[target="_blank"]:匹配 target 属性值等于 _blank 的 a 元素
3、a[href^="https"]:匹配 href 属性值以 https 开头的 a 元素
4、a[href$=".jpg"]:匹配 href 属性值以 .jpg 结尾的 a 元素
5、a[href*="baike"]:匹配 href 属性值包含 baike 的 a 元素
6、a[class~="abc"]:匹配 class 属性值以空格为分隔符,其中有一个等于 abc 的 a 元素
伪类选择器和伪元素选择器使用频率不高,本文暂不说明,详细示例可参考:https://www.haorooms.com/tools/css_selecter/
二、CSS选择器权重和优先级
共分为5个等级 :
第1等:提升指定样式规则的应用优先权,如:color:red !important,权值为10000(不建议使用)
第2等:代表内联样式,如: style="xxx",权值为1000
第3等:代表ID选择器,如:#content,权值为100
第4等:代表类,伪类和属性选择器,如.content,:hover,[attribute],权值为10
第5等:代表元素选择器和伪元素选择器,如div,p,权值为1
通用选择器(*),子选择器(>)和相邻同胞选择器(+)并不在这四个等级中,所以他们的权值都为0
三、CSS选择器权重计算

1、元素被两个css样式选中,选择权重大的样式,如果权重一样,以css中后出现的为准
2、元素没有被css样式选中,要显示继承的样式时,使用就近原则
2、继承的样式权重为0(color、 text-开头的、line-开头的、font-开头的样式都可以继承)
判断一块内容的样式是什么?按照以下步骤:

HTML代码:
<div id="content">
<div id="main-content">
<h2>CSS简介</h2>
<p>CSS是一组格式设置规则,用于控制Web页面的外观。</p>
<div class="paragraph">
<h2 class="first">使用CSS布局的优点</h2>
<p>1、表现和内容相分离 2、提高页面浏览速度 3、易于维护和改版</p>
</div>
</div>
</div>
CSS代码:
/* 100(#main-content) + 10(class="paragraph") + 1(h2) = 111 */
#main-content [class="paragraph"] h2 {
color:yellow;
} /* 100(#main-content) + 1(div) + 10(.paragraph) + 1(h2) = 112 */
#main-content div.paragraph h2 {
color:orange;
} /* 1(body) + 100(#content) + 1(div) + 10([id="main-content"]) + 1(h2) = 113 */
body #content div[id="main-content"] h2 {
color:green;
} /* 1(div) + 100(#main-content) + 1(div) + 10(.paragraph) + 1(h2) + 10(.first) = 123 */
div#main-content div.paragraph h2.first {
color:pink;
} /* 100(#content) + 100(#main-content) + 1(h2) = 201 */
#content #main-content>h2 {
color:blue
} /* 100(#content) + 1(div) + 100(#main-content) + 1(h2) = 202 */
#content div#main-content h2{
color:red;
}
常见CSS选择器的权重和优先级的更多相关文章
- CSS选择器的权重与优先规则?
我们做项目的时候,经常遇到样式层叠问题,被其他的样式覆盖,或者写的权重不高没效果,对权重没有具体的分析,做了一个总结. css继承是从一个元素向其后代元素传递属性值所采用的机制.确定应当向一个元素应用 ...
- css选择器的分类及优先级计算方法总结
首先声明一下CSS三大特性—— 继承. 优先级和层叠.继承即子类元素继承父类的样式;优先级是指不同类别样式的权重比较;层叠是说当数量相同时,通过层叠(后者覆盖前者)的样式. css选择符分类 首先来看 ...
- css选择器万年不变的优先级和权重
我们在使用CSS对网页元素定义样式时经常会遇到这种情况:要对一般元素应用一般样式,然后在更特殊的元素上覆盖它们.那么我们怎么样来保证我们所新定义的元素样式能覆盖目标元素上原有的样式呢? 在CSS中,会 ...
- css选择器有哪些,选择器的权重的优先级
选择器类型 1.ID #id 2.class .class 3.标签 p 4.通用 * 5.属性 [type="text"] 6.伪类 :hover 7.伪元素 ::first-l ...
- CSS选择器的权重与优先规则
权重顺序 “important > 内联 > ID > 类 > 标签 | 伪类 | 属性选择 > 伪对象 > 继承 > 通配符”. 原文:http://w ...
- CSS选择器及其权重
#转载请留言联系 1.标签选择器 标签选择器,此种选择器影响范围大,一般用来做一些通用设置,或用在层级选择器中.举例: div{color:red} ...... <div>这是第一个di ...
- HTML选择器的权重(优先级)
选择器的优先级主要用于样式发生冲突的情况下 选择器范围越小,优先级越高 行内样式>id选择器>类选择器>标签选择器>通用选择器 这里涉及一个权重值的问题,权重值越高,优先级越大 ...
- css选择器的权重
权重会叠加!
- CSS选择器的权重与优先规
我们把特殊性分为4个等级,每个等级代表一类选择器,每个等级的值为其所代表的选择器的个数乘以这一等级的权值,最后把所有等级的值相加得出选择器的特殊值. 4个等级的定义如下: 第一等:代表内联样式,如: ...
随机推荐
- VSCode开发Vue-代码格式化最完美设置
Vue在VsCode上面的开发,代码格式话是个老大难问题了. 有很多文章介绍Prettier四个配置方法,以及如何启用.但是结果就是:一个一个配完,还是看着难受 现在尝试出一种最完美格式化方式,分享出 ...
- Dockerfile+Jenkinsfile+GitLab轻松实现.NetCore程序的CI&CD
一.相关介绍 Dockerfile:关于Dockerfile的使用说明,我在文章<让.NetCore程序跑在任何有docker的地方>中有说到,这里不在赘述,需要的可以先看下,本文主要介绍 ...
- 【Leetcode】287. 寻找重复数(数组模拟链表的快慢指针法)
寻找重复数 根据题意,数组中的数字都在1~n之间,所以数字的范围是小于数组的范围的,数组的元素可以和数组的索引相联系. 例如:nums[0] = 1 即可以将nums[0]作为索引 通过nums[0] ...
- 《计算机网络》课程笔记 (Ch03-运输层)
为运行在不同主机上的应用进程之间提供逻辑通信功能. 将应用层报文切分为块,然后加上运输层首部,形成报文段,交付给网络层. 多路复用与多路分解 将网络层提供的主机到主机交付服务延伸到进程到进程交付服务. ...
- 坑爹的PostgreSQL的美元符号(有时需要替换成单引号)
今天想在PostgeSQL数据库里建一个存储过程(或函数也行),由于对存储过程比较生疏,上网搜了很多教程和源代码例子,照着写,发现怎么都不行,甚至把网上教程包括官方教程的源代码原封不动的复制下来一执行 ...
- 突发!HashiCorp禁止在中国使用企业版VAULT软件
目录 前言 HashiCorp公司介绍 HashiCorp旗下的软件 Provision Secure Connect Run 总结 前言 昨天HashiCorp突然发布一则消息,禁止在中国使用Vau ...
- cors跨越深度刨析
解决跨域的方式JSOP,和CORS JSONP不做介绍了. CORS跨域: 参考阮一峰http://www.ruanyifeng.com/blog/2016/04/cors.html 官方:https ...
- ISTQB认证测试工程师基础大纲(2019.12.25)
1.本文档目的: 用于生成认证测试员基础级考试题. 本大纲中除了简介和附录外,考核通常包含了所有K1级别的内容,因此,应试者可能会被考到本大纲中要求识别,牢记,或记忆的关键词或概念.在本大纲中,每章开 ...
- IntelliJ IDEA连接不上数据库 (Connection to testdb@localhost failed. [08001] Could not create connection to database server. Attempted reconnect 3 times. Giving up.)
问题提示为: 原因:MySQL数据库版本为8.0以上,需要在URL加上时区,即加上?serverTimezone=GMT 成功后为:
- footer部分,当页面主题内容不满一屏时,始终位于页面底部
比如上面这种情况,footer部分本来应该位于最底部,但是main内容太少导致连在一起,影响美观 解决方案: 给footer加上margin-top:负值 值的大小为footer的高度 写了个小dem ...