持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情
有关于伪类选择器
写在前面: 记录一些常用的好用的css选择器以及对应用法.
动态伪类选择器语法
a:link(被定义了超链接并未被访问过)a:visited(被定义了超链接已被访问过)a:active(表单元素被选中激活)a:hover(元素被鼠标滑过)input:focus(表单元素被获取焦点)input:checked(表单元素被获取焦点)input:enabled(表单元素被启用)input:disabled(表单元素被禁用)
a标签有4种伪类差不多(即对应四种状态),如下:
- :link “链接”:超链接点击之前
- :visited “访问过的”:链接被访问过之后
- :hover “悬停”:鼠标放到标签上的时候
- :active “激活”: 鼠标点击标签,但是不松手时。
结构伪类选择器语法
-
E F:nth-child(n):选择父元素E的第n个子元素F。其中n可以是整数(1,2,3)、关键字(even,odd)、可以是公式(2n+1),而且n值起始值为1,而不是0.
-
E:fisrt-child :作为父元素的第一个子元素的元素E。与E:nth-child(1)等同
-
E:last-child :作为父元素的最后一个子元素的元素E。与E:nth-last-child(1)等同
-
E:root:选择匹配元素E所在文档的根元素。在HTML文档中,根元素始终是html,此时该选择器与html类型选择器匹配的内容相同
-
E F:nth-last-child(n):选择父元素E的倒数第n个子元素F。此选择器与E:nth-child(n)选择器计算顺序刚好相反,但使用方法都是一样的,其中:nth-last-child(1)始终匹配最后一个元素,与last-child等同
-
E:nth-of-type(n) :选择父元素内具有指定类型的第n个E元素
-
E:nth-last-of-type(n):选择父元素内具有指定类型的倒数第n个E元素
-
E:first-of-type:选择父元素内具有指定类型的第一个E元素,与E:nth-of-type(1)等同
-
E:last-of-tye :选择父元素内具有指定类型的最后一个E元素,与E:nth-last-of-type(1)等同
-
E:only-child :选择父元素只包含一个子元素,且该子元素匹配E元素
-
E:only-of-type:选择父元素只包含一个同类型子元素,且该子元素匹配E元素
逻辑伪类选择器
:is()和:where()
:is()CSS伪类函数将选择器列表作为参数,并选择该列表中任意一个选择器可以选择的元素。
// 不使用:is()
div span,
div i,
p span,
p i {
color: red;
}
// 使用:is()
:is(div, p) :is(span, i) {
color: red;
}
// 其实就是简便语法,代码简写,把不同父容器的相同(可以不止一个)子元素的一些共性样式抽离出来
示意图(图片来自CoCo大佬):
:is和:where在代码语法上是一模一样的,但是,区别在于优先级.
:where()的优先级总是为 0:is()的优先级是由它的选择器列表中优先级最高的选择器决定
:not()
:not()伪类选择器用来匹配不符合一组选择器的元素。由于它的作用是防止特定的元素被选中,它也被称为反选伪类
<div class="a">div.a</div>
<div class="b">div.b</div>
<div class="c">div.c</div>
<div class="d">div.d</div>
---
div:not(.b) {
color: red;
}
---
// 其他元素为红色 .b为默认的黑色.
:has()
: has() 伪类代表一个元素,其给定的选择器参数(相对于该元素的 :scope)至少匹配一个元素。
// 下面的选择器只会匹配直接包含 <img> 子元素的 <a> 元素
a:has(> img)
// 下面的选择器只会匹配其后紧跟着 <p> 元素的 <h1> 元素:
h1:has(+ p)
End