定义CSS样式时,经常出现两个或更多规则应用在同一元素上
·选择器相同,则执行层叠性
·选择器不同,就会出现优先级的问题,就会涉及CSS权重计算。
下面我们详解介绍 CSS层叠性权重计算方法。
1) 权重计算公式
关于CSS权重,我们需要一套计算公式来去计算,这个就是 CSS Specificity(特殊性)
值从左到右,左面的最大,一级大于一级,数位之间没有进制,级别之间不可超越。
·关于CSS权重,我们需要一套计算公式来去计算,这个就是 CSS Specificity(特殊性)
2) 权重叠加
我们经常用交集选择器,后代选择器等,是有多个基础选择器组合而成,那么此时,就会出现权重叠加。
就是一个简单的加法计算
div ul li ------>0,0,0,3
.nav ul li ------>0,0,1,2
a:hover -----—>0,0,1,1
.nav a ------>0,0,1,1
注意:
数位之间没有进制 比如说: 0,0,0,5 + 0,0,0,5 =0,0,0,10 而不是 0,0, 1, 0, 所以不会存在10个div能赶上一个类选择器的情况。
3) 继承的权重是0
这个不难,但是忽略很容易绕晕。其实,我们修改样式,一定要看该标签有没有被选中。
1) 如果选中了,那么以上面的公式来计权重。谁大听谁的。
2) 如果没有选中,那么权重是0,因为继承的权重为0。
前端入门Web前端HTML5+CSS3+移动Web前端全套
h1, h2, p {} // 选择所有的h1,h2,p1、后代选择器 (包含选择器): 以空格隔开包含关系的元素
2、子选择器 以>隔开父子级元素
3、兄弟选择器 ~ +
1、.tab p[title]:{ color: red} 选择所有带有title属性的p标签
2、.tab p[title = 'name']: { color: red} 选择所有title=name属性的标签
3、.tab p[title ^= 'na'] :{} 选择开头title属性带有na开头的标签
4、.tab p[title$= 'po'] :{} 选择title属性结尾是po的标签
5、.tab p[title *= 'name'] 只要含有name值就行的标签
6、.tab p[title ~= 'name flower'] 包含name的属性的标签
7、.tab p[title |= 'name'] 以name开头的属性的标签
伪类不仅可以作用在a链接上,还可以作用在其他元素上
:link 未访问过的链接
:visited 访问过的链接
:active 鼠标点击的一瞬间
:hover 鼠标悬浮在链接上
:focus 具有焦点的输入元素 innput(将输入的外边框去掉 :focus{ outline: none})
:target 锚点目标选择器
:root 文档的根选择器
:empty 空选择器,没有任何子集的元素
:first-child div下所有孩子中的第一个
:last-child div下所有孩子中的最后一个
:first-of-type div下类型为p的第一个元素
:last-of-type div下类型为p的最后一个元素
:nth-child(2) 选择每个p元素是其父级的第二个子元素, 选择器匹配父元素中的第 n 个子元素,元素类型没有限制。
:nth-last-child(n) 选择器匹配属于其元素的第 N 个子元素的每个元素,不论元素的类型,从最后一个子元素开始计数。
:nth-last-of-type( n )选择器匹配同类型中的倒数第n个同级兄弟元素。
:after 文本伪类选择器,在每个<p>元素之后插入内容
:before 文本伪类选择器,在每个<p>元素之前插入内容
:first-letter 文本伪类选择器,选择每一个<p>元素的第一个字母
:first-line 文本伪类选择器,选择每一个<p>元素的第一行
锚点目标的伪类选择器
首尾元素的伪类选择器
:first-child div下所有的第一个p元素 div p:first-chid
:last-child div下所有的最后一个p元素 div:last-child
:first-of-type 特定 类型 (p元素)的第一个元素 div p:first-of-type
:last-of-type 特定 类型 (p元素)的第一个元素
唯一选择器
:only-child 只有一个孩子的div
:only-of-type div下只有一种孩子类型的选择器
表单上的伪类选择器
文本的伪类选择器
文本伪类表单
知识点补充:
!important : 强制权重优先级
浏览器默认font-size: 14px
可继承元素:color、font-size、font-family
通配符的权重:0
继承的权重: NULL 0>NULL
总结排序:!important >行内样式>ID选择器 >类选择器 >标签 、伪类>通配符* >继承 >浏览器默认属性
一、首先是C3属性选择器
1. 每一个标签都有自己的属性,是吧?要给它一个样式,就可以通过它的属性来找到它。
2. 属性选择器的权重是10
3. 都有哪些?
- 标签名[属性名]
- 标签
- 标签名[type="属性名"]
- ^= 以icon开始的选出来
- $= 以icon结尾的选出来
- *= 代表任意位置,包含该属性的就要选出来
例子
二、结构伪类选择器
语法:
nth-child(n) 释义:
- 想要选哪个n就在那个里面输入数字几就可以了
- 这里的n 可以有特殊数值偶数even 奇数odd 有利于做隔行变色
- n可以是公式
- -n+5选出前5个。
例子
三、ntf-of-type 选择器
先上总结:
- nth-child(n) 选择父元素里面的第一个 n个孩子
- of-type 选择指定类型的元素
例子
四、伪类选择器
方式一 ::before ::after
方式二 :before :after
总结:伪元素前面可以是一个冒号,也可以是两个冒号,不影响结果
例子