Skip to content

选择器

基础选择器

标签选择器

根据 HTML 标签名 选中元素。

css
p {
  color: blue;
}

类选择器

根据元素的 class 属性 选中元素。 在 CSS 中用 . 开头。

css
.title {
  font-size: 20px;
  color: red;
}

ID 选择器

根据元素的 id 属性 选中元素。 在 CSS 中用 # 开头。

css
#main {
  background: lightgray;
}

通配符选择器

css
* {
  margin: 0;
  padding: 0;
}

关系选择器

根据 元素之间的层级或关系 来选择目标元素,A,B 表示选择的对象,A 和 B 之间的符号表示 A 和 B 之间的关系。

后代选择器 常用

选中 A 元素内部所有的 B 元素(无论嵌套多少层)。

css
div p {
  color: red;
}
html
<div>
  <p>我是 div 里面的 p</p>
  <section><p>我也会被选中</p></section>
</div>

子代选择器 常用

只选中 A 的直接子元素 B(不包括更深层的嵌套)。

div > p {
  color: blue;
}
html
<div>
  <p>我会变蓝</p>
  <section><p>我不会变蓝</p></section>
</div>

相邻兄弟选择器 较少使用

选中 紧跟在 A 后面的第一个兄弟元素 B

css
h2 + p {
  color: green;
}
html
<h2>标题</h2>
<p>我会变绿</p>
<p>我不会变绿</p>

通用兄弟选择器较少使用

选中 A 后面的所有兄弟元素 B(不必紧挨着)

css
h2 ~ p {
  color: orange;
}
html
<h2>标题</h2>
<p>第一个段落</p>
<div>中间的div</div>
<p>第二个段落</p>

总结

关系选择器可以描述多个对象,不一定只有两个对象,他可以一层层向下寻找:

css
/*div的所有子代p,p中的直接子元素.box*/
div p > .box {
}
选择器示例匹配关系匹配数量常用场景联想
后代选择器A BA 内所有 B多个嵌套样式,如菜单内的列表无约束( )
子代选择器A > BA 的直接子元素 B多个限定层级结构等级森严(>),只管直接下级
相邻兄弟选择器A + B紧挨着 A 的下一个兄弟 B1 个标题后第一个段落两者能加(+),说明是兄弟
通用兄弟选择器A ~ BA 后所有兄弟 B多个同级多个相似元素两者约等于(~),大家都是人

分组选择器

分组选择器(Group Selector) 用于 对多个选择器同时应用相同的样式。 选择器之间使用 逗号(, 分隔。

css
/*分组选择器一般会进行换行*/
selector1,
selector2,
selector3 {
  property: value;
}

这样可以让多个元素共享同一套样式,避免重复书写。

属性选择器

属性选择器是一种根据元素属性来选取元素的 CSS 选择器。它可以让你不依赖类名或标签名,而是通过元素的 属性和值 来进行样式匹配。

选择器语法作用描述示例
[attr]选择带有指定属性的元素input[disabled]
[attr="value"]属性值完全等于指定值input[type="text"]
[attr~="value"]属性值中包含某个独立单词(用空格分隔)div[class~="active"]
[attr^="value"]属性值以指定字符串开头a[href^="https"]
[attr$="value"]属性值以指定字符串结尾img[src$=".png"]
[attr*="value"]属性值中包含指定字符串(任意位置)a[href*="example"]

示例

css
/*选择所有 type="text" 的输入框。*/
input[type="text"] {
  border: 1px solid #ccc;
}