发布于 2026-01-06 0 阅读
0

CSS 选择器速查表 为什么需要另一份 CSS 速查表? 目录 基本选择器 后代选择器 多重选择器 组合选择器 兄弟选择器 伪选择器 伪选择器(链接和输入框) 属性选择器 资源:

CSS 选择器速查表

为什么还要再写一份 CSS 速查表?

目录

基本选择器

后代选择器

多选器

组合选择器

同级选择器

伪选择器

伪选择器(链接和输入)

属性选择器

资源:

掌握 CSS 选择器的有效使用方法对前端开发人员非常有用。我制作了一份常用选择器的速查表。

为什么还要再写一份 CSS 速查表?

虽然还有其他 CSS 选择器速查表(参见资源),但我发现它们要么缺乏分组/组织,要么缺少示例,要么信息过多。

这就是为什么我把这份速查表分成 8 种不同类型的原因。每组开头都会有一个 HTML 代码片段。请将该 HTML 代码片段与该组代码一起使用(并随意尝试!)。这份列表并不完整,我的目标是尽可能涵盖所有内容。下面的列表应该可以满足大多数开发需求。

目录

基本选择器

它们用于选择元素/ID/类。它们也是最常用且最容易记忆的。

<div id="app">
  <div class="container">
    <p class="hello">Hello</p>
    <p class="hola">Hola</p>
  </div>
  <div class="other">
    I am left behind...
  </div>
</div>
Enter fullscreen mode Exit fullscreen mode
  • 元素选择器:Element用于选择任何给定的元素。
p { color: blue; }
div { color: magenta; }
Enter fullscreen mode Exit fullscreen mode
  • 类选择器:.class它会选择所有包含给定类名的元素。
.hello {
  color: red;
}
Enter fullscreen mode Exit fullscreen mode
  • ID 选择器:#id它选择包含给定 HTML ID 的元素。
#app {
  color: red;
}
Enter fullscreen mode Exit fullscreen mode
  • 通用选择器:*它会选择所有元素。
* {
  color: yellow;
}
Enter fullscreen mode Exit fullscreen mode

后代选择器

这些是用于选择任何元素后代的选择器。

<div class="container">
  <div class="paragraph-container">
    <p id="hola-id" class="hola-class">Hola world</p>
    <p class="hello-class">Hello world</p>
    <p class="hello-class again-class">Hello again world</p>
  </div>
</div>
Enter fullscreen mode Exit fullscreen mode
  • 任意后代选择器:A B选择元素 B中所有属于元素 A 的后代元素。后代元素可以嵌套很深。
.container .hello-class {
  color: red;
}
Enter fullscreen mode Exit fullscreen mode

我们可以将此与以下方式结合*起来得到:

.paragraph-container * {
  color: blue;
}
Enter fullscreen mode Exit fullscreen mode

这将选中所有内容 .paragraph-container

  • 子节点选择器:A > B与任何后代选择器不同,此选择器仅选择直接后代/子节点。
.paragraph-container > .hello-class {
  color: blue;
}
Enter fullscreen mode Exit fullscreen mode

下面的方法行不通,因为.hello-class在这种情况下它不是直接后代:

.container > .hello-class {
  color: blue;
}
Enter fullscreen mode Exit fullscreen mode

多选器

<div class="container">
  <div class="paragraph-container">
    <p id="hola-id" class="hola-class">Hola world</p>
    <p class="hello-class">Hello world</p>
    <p class="hello-class again-class">Hello again world</p>
  </div>
  <p class="outside-class">I'm outside</p>
</div>
Enter fullscreen mode Exit fullscreen mode

多重选择器允许我们同时选择多个不相关的元素。

  • 多个选择器:A, B, C, ...要选择多个元素/类/ID,请使用以下方式连接它们,
.outside-class, .again-class, .hola-class {
  color: purple;
}
Enter fullscreen mode Exit fullscreen mode

组合选择器

组合选择器允许您使用多个引用来选择非常具体的元素。一个常见的用例是,通过给按钮添加类名,实现鼠标悬停/点击按钮时的高亮显示效果.active

<div class="container">
  <div class="paragraph-container">
    <p id="hola-id" class="hola-class">Hola world</p>
    <p class="hello-class">Hello world</p>
    <p class="hello-class active">Hello again world</p>
  </div>
  <p class="outside-class">I'm outside</p>
</div>
Enter fullscreen mode Exit fullscreen mode
  • 组合选择器:AB. 这会选择同时包含 A 和 B 的元素。语法类似于后代选择器,只是没有空格。
p.active {
  color: yellow;
}
Enter fullscreen mode Exit fullscreen mode

我们可以组合任何元素和类:

p#hola-id {
  color: blue;
}
.hello-class.active {
  color: red;
}
Enter fullscreen mode Exit fullscreen mode

同级选择器

这些选择器会针对它们的同族成员。

<div class="container">
  <div class="paragraph-container">
    <p id="hola-id" class="hola-class">Hola world</p>
    <p class="hello-class">Hello world</p>
    <p class="hello-class again-class">Hello again world</p>
  </div>
  <p class="outside-class">I'm outside</p>
</div>
Enter fullscreen mode Exit fullscreen mode
  • 相邻兄弟选择器(严格):.A + B选择紧跟在该元素之后的一个兄弟元素。sibling1 + sibling2
#hola-id + .hello-class {
  color: blue;
}
Enter fullscreen mode Exit fullscreen mode

请注意,下面的 CSS 代码不会生效,因为.again-class尽管它是#hola-id的兄弟元素,但相隔2 个元素。

#hola-id + .again-class {
  color: blue;
}
Enter fullscreen mode Exit fullscreen mode
  • 任意相邻兄弟选择器(宽松):A ~ B类似于相邻兄弟选择器,但会选择其后的任意兄弟选择器。这个语法~让我想起了耸肩🤷‍♂️🤷‍♀️——因此~比更宽松+
#hola-id ~ .hello-class {
  color: purple;
}
Enter fullscreen mode Exit fullscreen mode

注意:反向操作无效(B ~ A与以下情况不同A ~ B):

.again-class ~ #hola-id {
  color: red
}
Enter fullscreen mode Exit fullscreen mode

伪选择器

<div class="container">
  <div class="paragraph-container">
    <p id="hola-id" class="hola-class">Hola world</p>
    <p class="hello-class">Hello world</p>
    <p class="hello-class again-class">Hello again world</p>
  </div>

  <p class="outside-class">I'm outside</p>

  <ul id="list-id" class="list-class">
    <li class="list-item-class">First</li>
    <li class="list-item-class">Second</li>
    <li class="list-item-class">Third</li>
    <li class="list-item-class">Fourth</li>
    <li class="list-item-class">Fifth</li>
  </ul>

  <div class="single-paragraph-container">
    <p>I'm the only child of this span</p>
  </div>
</div>
Enter fullscreen mode Exit fullscreen mode
  • 首子选择器:A:first-child它会选择每个目标元素,该元素必须是其父元素的第一个子元素。这个定义乍一看可能有点令人困惑。我的理解是,目标元素A本身必须是某个父元素的第一个子元素。

注意短语:父母的第一个孩子。

li:first-child {
  color: blue;
}
Enter fullscreen mode Exit fullscreen mode

上述方法有效,因为li有一个父对象:ulli也是ul的第一个子对象。

如果你瞄准目标会发生什么ul

ul:first-child {
  color: red;
}
Enter fullscreen mode Exit fullscreen mode

什么也没发生。这是因为虽然ul它有一个父节点(div具有类container),但ul它不是第一个子节点(它是第三个子节点)。

下面的代码可以运行,因为.paragraph-container它是.container第一个子节点。

.paragraph-container:first-child {
  color: red;
}
Enter fullscreen mode Exit fullscreen mode
  • 最后一个子节点选择器:A:last-child。其工作方式与第一个子节点选择器类似,区别在于目标节点必须是最后一个子节点,而不是第一个子节点。
li:last-child {
  color: purple;
}
Enter fullscreen mode Exit fullscreen mode
  • 唯一子节点选择器:A:only-child选择A其父节点的唯一子节点。类似于第一个子节点和最后一个子节点选择器。不同之处在于,目标节点不能有任何同级节点。
p:only-child {
  color: red;
}
Enter fullscreen mode Exit fullscreen mode

请注意,虽然我们有多个p元素,但只有最后一个元素适用,因为其他p元素并非其父元素的唯一子元素,它们还有其他同级元素。

  • 第 N 个子节点选择器:A:nth-child(n)它会选择其父节点的第 n 个子节点作为目标节点。
li:nth-child(2) {
  color: red;
}
Enter fullscreen mode Exit fullscreen mode

现在我们来试试p

p:nth-child(2) {
  color: red;
}
Enter fullscreen mode Exit fullscreen mode

你能看出为什么有两个p元素改变了颜色吗?

  • 最后第 n 个子节点选择器:A:nth-last-child(n)。它与第 n 个子节点选择器类似,只是它是从最后一个子节点开始计数的。
li:nth-last-child(2) {
  color: red;
}
Enter fullscreen mode Exit fullscreen mode
  • 非选择器:A:not(B). 选择所有A非空元素B
p:not(.outside-class) {
  color: blue;
}
Enter fullscreen mode Exit fullscreen mode
  • 第一种类型选择器:A:first-of-type它会选择其同级元素中第一个具有该类型的元素。

这个听起来和:first-child我第一次听到它时的感觉很相似。为了感受一下它的不同之处,我们来实际操作一下:

li:first-of-type {
  color: blue;
}
Enter fullscreen mode Exit fullscreen mode

好吧,这个例子不太好,因为它和li:first-child😅的结果一样。我们来看另一个例子:

p:first-of-type {
  color: red;
}
Enter fullscreen mode Exit fullscreen mode

这个更好。对比一下p:first-child。你会注意到,使用时中间部分p会变成红色first-of-type,而使用时则不会first-child。这是因为中间部分p是它所有兄弟元素中的第一个p元素类型💡。

  • 最后一种类型选择器:A:last-of-type。与上面一样,但方向相反。
li:last-of-type {
  color: blue;
}
Enter fullscreen mode Exit fullscreen mode
  • 第 N 个类型选择器:A:nth-of-type(n)。与上面的两个选择器类似,但此选择器选择该时间的第 n 个元素。
li:nth-of-type(2) {
  color: blue;
}
Enter fullscreen mode Exit fullscreen mode

我们来尝试不同的元素:

p:nth-of-type(2) {
  color: blue;
}
Enter fullscreen mode Exit fullscreen mode

如果我们把它改成p:nth-of-type(1),它的行为就和一样first-of-type。同样,如果我们把它改成p:nth-of-type(4),颜色也不会改变——这是因为兄弟元素中没有第四个p元素。

  • 仅类型选择器:A:only-of-type. 选择仅具有该类型的元素(不包括同级元素)。
p:only-of-type {
  color: purple;
}
Enter fullscreen mode Exit fullscreen mode

注意有两个p元素改变了颜色。这是因为这两个p元素没有相同类型的同级元素。

伪选择器(链接和输入)

下面列出了更多伪选择器。这些选择器通常与链接(a)相关联(尽管它们也可能适用于非链接元素)。

<div id="app">
  <a class="cheesyLink" href="#">I like cheese</a>
  <a class="sweetLink" href="#">I like donut</a>
  <div class="burger">I like cheezburger</div>
  <div class="container">
    <form onsubmit="event.preventDefault()">
      <input class="myinput"type="text" />
      <input class="mysubmit" type="submit" />
    </form>
  </div>
</div>
Enter fullscreen mode Exit fullscreen mode
  • 悬停选择器:A:hover选择悬停的元素。通常用于高亮显示链接。
a:hover {
  color: red;
}
Enter fullscreen mode Exit fullscreen mode

它不一定非得是a标签。这个选择器适用于任何内容。

.burger:hover {
  color: red;
}
Enter fullscreen mode Exit fullscreen mode
  • 焦点选择器:A:focus. 选择一个已聚焦的元素。通常与 . 一起使用input
input:focus {
  background: red;
}
Enter fullscreen mode Exit fullscreen mode
  • 活动选择器:A:active选择处于活动状态的元素。

注意:点击后背景会发生变化。

.cheesyLink:active {
  background: red;
}
Enter fullscreen mode Exit fullscreen mode
  • 链接选择器:A:link它会选择所有尚未被点击的链接。
a:link {
  background: blue;
}
Enter fullscreen mode Exit fullscreen mode

属性选择器

属性选择器可用于选择 HTML属性

  <div for="chocolate">Chocolate</div>
  <div for="peanut">Peanut</div>
  <div for="butter">Butter</div>
  <div>Jelly</div>
Enter fullscreen mode Exit fullscreen mode
  • 基本属性选择器: . 选择所有具有属性的A[B]元素AB
div[for] {
  color: red;
}
Enter fullscreen mode Exit fullscreen mode
  • 特定属性选择器:A[B="C"]选择所有A具有B特定值的属性的元素C
div[for="chocolate"]{
  color: blue;
}
Enter fullscreen mode Exit fullscreen mode
  • 特定属性选择器(起始值):A[B^="C"]选择所有具有起始值的属性的元素请注意,这A起始字符串的正则表达式。BC^
div[for^="cho"] {
  color: magenta;
}
Enter fullscreen mode Exit fullscreen mode
  • 特定属性选择器(结尾):A[B$="C"]选择所有具有以该结尾为值的A属性的元素。请注意,这是用于指定结尾字符串的正则表达式。BC$
div[for$="er"] {
  color: yellow;
}
Enter fullscreen mode Exit fullscreen mode
  • 特定属性选择器(通配符):A[B*="C"]选择所有属性值包含该值的元素ABC注意,*在正则表达式和 glob 模式中,它通常是通配符。
div[for*="ut"]{
  color: cyan;
}
Enter fullscreen mode Exit fullscreen mode

好了,各位!如果需要更多参考资料,请查看下方资源。如果您有其他方法可以改进这份速查表,使其更加实用,欢迎在下方留言。

资源:

文章来源:https://dev.to/iggredible/css-selectors-cheatsheet-24bh