CSS 选择器基础

选择器是 CSS 规则的第一部分,它告诉浏览器”给哪些元素应用样式”。CSS 提供了一套丰富的选择器语法,让你能精准选中任意元素。

类型选择器(Type Selector)

直接使用 HTML 标签名,选中所有该类型的元素:

css
p {
  line-height: 1.75;
}

h2 {
  color: #1e293b;
}

img {
  max-width: 100%;
}

类选择器(Class Selector)

. 开头,选中所有 class 属性包含指定值的元素。这是最常用的选择器

css
/* 选中 class="highlight" 的所有元素 */
.highlight {
  background: #eff6ff;
  border-left: 4px solid #2563eb;
}

/* 选中 class="btn" 的所有元素 */
.btn {
  padding: 0.5rem 1.5rem;
  border-radius: 6px;
}

一个元素可以有多个 class,用空格分隔:

html
<p class="highlight important">这条文字同时有两个类</p>

ID 选择器(ID Selector)

# 开头,选中 id 属性为指定值的唯一元素

css
/* 选中 id="main-title" 的元素 */
#main-title {
  font-size: 2.5rem;
}

ID 选择器的优先级极高,会让后续覆盖变得困难。在绝大多数情况下,应优先使用 class 选择器。ID 更常用于页面内锚点导航和 JavaScript 定位。

通配选择器(Universal Selector)

* 选中页面上的所有元素

css
/* 清除所有元素的默认外边距和内边距 */
* {
  margin: 0;
  padding: 0;
}

通配选择器常出现在 CSS reset 中,用于统一各浏览器的默认样式。它的性能开销在现代浏览器中已微乎其微,是一种便捷且广泛使用的方式。如果你需要更精细的控制,也可以选择针对性重置(如 body, h1, h2, p { margin: 0; })。

属性选择器(Attribute Selector)

根据元素的属性来匹配。有几种匹配方式:

语法匹配条件示例
[attr]存在该属性[disabled]
[attr=value]属性值完全等于[type="submit"]
[attr^=value]属性值以 value 开头[href^="https"]
[attr$=value]属性值以 value 结尾[href$=".pdf"]
[attr*=value]属性值包含 value[class*="card"]
css
/* 所有包含 disabled 属性的元素 */
[disabled] {
  opacity: 0.5;
  cursor: not-allowed;
}

/* type="submit" 的 input */
input[type="submit"] {
  background: #2563eb;
  color: white;
}

/* href 以 https 开头的链接 */
a[href^="https"]::after {
  content: " ↗";
  font-size: 0.8em;
}

/* 链接到 PDF 文件的 */
a[href$=".pdf"]::after {
  content: " (PDF)";
  font-size: 0.8em;
  color: #64748b;
}

分组选择器

用逗号 , 将多个选择器合并:

css
h1, h2, h3, h4, h5, h6 {
  font-family: 'Georgia', serif;
  margin-top: 1.5em;
  margin-bottom: 0.5em;
}

等价于分别写了六条规则。

选择器使用建议

推荐度选择器原因
首选class 选择器灵活、可复用、优先级适中
可用类型选择器适合全局基础样式(如 body、h1、p)
可用属性选择器适合动态状态(如 [disabled][data-active]
少用ID 选择器优先级过高,破坏级联
可用通配选择器便捷全局重置,现代浏览器性能影响可忽略

这些是最基础的选择器。CSS 还提供了组合选择器(后代、子代、兄弟)和伪类/伪元素选择器,分别在组合选择器和伪类与伪元素章节中讲解。