打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【CSS】CSS选择器及其权重
userphoto

2022.09.20 湖南

关注

基本选择器

id 选择器 - - - #id {} - - - 唯一标识,只能有一个。尽量少用 id 选择器,影响权重

类名选择器 - - - .class {} - - - class 类名,可以有多个,可以重复使用

标签选择器 - - - tagName {}

通配符选择器 - - - * {}

属性选择器

存在选择器 - - - [attr] {}

相等选择器 - - - [attr="value"] {}

前缀选择器 - - - [attr^="str"] {} - - - 选中所有属性 attr 里面以字符串 str 开头的元素

后缀选择器 - - - [attr$="str"] {}

子串选择器 - - - [attr*="str"] {} - - - 选中所有属性 attr 里面包含字符串 str 的元素

包含选择器 - - - [attr~="word"] {} - - - 选中所有属性 attr 里面包含单词 word 的元素

并列选择器

Selector1Selector2 - - - eg: p[class^="head"]、div.className、ul#wrap…

选择器组合

选择多个元素 - - - selector1, selector2 {}

选择后代 - - - selector1 selector2 {}

选择子元素 - - - selector1 > selector2 {}

选择兄弟元素 - - - selector1 ~ selector2 {}

选择相邻兄弟元素 - - - selector1 + selector2 {}

组合选择器的 selector1 必须在 selector2 前面,因为 CSS 样式是从上往下渲染的

selector 可以是任意一种选择器

伪类选择器

普通伪类选择器

selector:hover {} - - - 当鼠标悬停在当前元素上方时触发

selector:active {} - - - 当鼠标点击当前元素时触发

selector1:not(selector2) {} - - - 反选; eg:li:not([class^="super"])

selector:checked {} - - - 当前元素被勾选时触发 - - - 一般配合单选框、复选框使用

selector:focus {} - - - 光标在当前元素上聚焦时触发 - - - 一般配合文本框使用

selector:focus-within {} - - - 光标在当前元素或其后代上聚焦时触发

selector:link {} - - - 作用于未被访问过的超链接

selector:visited {} - - - 作用于被访问过的超链接

对于超链接,伪类必须按 link,visited - hover - active 的顺序设置。当然,不需要设置的可以不写

结构性伪类选择器

selector:nth-child(n) {} - - - 所有兄弟元素中的第 n 个(如果被选中的元素不满足选择器的条件,则不生效)

selector:nth-of-type(n) {} - - - 所有兄弟元素中、满足选择器 selector 的第 n 个(就是说,一定会生效)

selector:nth-last-child(n) {} - - - 所有兄弟元素中的倒数第 n 个

selector:nth-last-of-type(n) {} - - - 所有兄弟元素中、满足选择器 selector 的倒数第 n 个

selector:first-child {} - - - 所有兄弟元素中的第 1 个

selector:first-of-type {} - - - 所有兄弟元素中、满足选择器 selector 的第 1 个

selector:last-child {} - - - 所有兄弟元素中的最后 1 个

selector:last-of-type {} - - - 所有兄弟元素中、满足选择器 selector 的最后 1 个

selector:nth-child(even) {} - - - 所有兄弟元素中,序号为偶数的兄弟(如果被选中的元素不满足选择器的条件,则不生效)

selector:nth-child(2n) {}

selector:nth-child(odd) {} - - - 所有兄弟元素中,序号为奇数的兄弟(如果被选中的元素不满足选择器的条件,则不生效)

selector:nth-child(2n + 1) {}

区分 nth-child(n) & nth-of-type(n):简而言之,nth-of-type() 的计算条件比较苛刻

无论是否满足选择器的条件,nth-child(n) 都会计算。只是 不满足条件的元素,不会生效选择器的样式

而 nth-of-type(n) 只会计算满足选择器条件的元素。所以 被选中的元素,一定会生效选择器的样式

p:nth-of-type(2n+1) { /* 奇数段 */

    color: blue;

    font-weight: 700;

}

p:nth-child(2n+1) { /* 奇数段 */

    background: lightpink;

}

1

2

3

4

5

6

7

8

<div> 这段不参与 nth-of-type 的计数、却是 nth-child 的第一段 </div>

<p> nth-of-type 的第一段、nth-child 的第二段 </p>

<p> nth-of-type 的第二段、nth-child 的第三段 </p>

<div> 这段不参与 nth-of-type 的计数、却是 nth-child 的第四段 </div>

<p> nth-of-type 的第三段、nth-child 的第五段 </p>

<p> nth-of-type 的第四段、nth-child 的第六段 </p>

1

2

3

4

5

6

伪元素选择器

selector::after { content: " " } - - - 用来创建一个伪元素,作为已选中元素的最后一个子元素

selector::before { content: " " } - - - 用来创建一个伪元素,作为已选中元素的第一个子元素

需要设置 content 属性,属性值为该元素的内容

即使该元素不需要内容,也要设置 content 属性,此时属性值为空字符串 ""

伪元素默认是行内元素 display: inline

一个选择器中只能使用一个伪元素(img::after::before ×)

其他伪元素选择器

::selection:鼠标选中内容发生改变,目前支持字体颜色和背景色

::first-letter:用于向某元素的第一个英文字母或第一个汉字添加样式

::first-line:用于向某个元素的第一行添加样式

::placeholder:作用于文本框内的提示符

选择器的权重 (面试考点)

选择器权重,也叫 CSS Specifity

id #id - - - 100

属性 [attr]、伪类 :hover、类名 .class - - - 10

标签 div、伪元素 ::after - - - 1

通配符 *、组合 + ~ >、否定伪类 :not() - - - 0

同一行的选择器权重值相加,权重值较高的样式会覆盖权重值较低的样式

如果权重值相同,则看样式编写的方式:行间样式 > 内联样式 > 外联样式

如果样式编写的方式也一样,则看样式编写的位置:下面的 > 上面的

权重值是 256 进制的,不是 10 进制的,不是 10 进制的,不是 10 进制的

!important 修饰的样式,权重为 infinity (无穷大)

p {

    background: #ccc !important;

}

————————————————

版权声明:本文为CSDN博主「Superman_H」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/Superman_H/article/details/108232294

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JQuery 选择器、过滤器介绍
CSS第四级选择器
css的选择器的详细介绍
jquery获取对象大全
小白入门你教程CSS选择器
jQuery
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服