CSS: CSS 选择器

选择器是 CSS 的核心——它的作用是"选中"你想要设置样式的 HTML 元素。CSS 提供了多种类型的选择器,从简单的标签选择器到复杂的选择器组合,让你能精确控制任意元素。

1. 基础选择器

(1) 1. 标签选择器(元素选择器)

直接使用 HTML 标签名作为选择器,会匹配文档中所有同名标签。

CSS
/* 所有 <p> 元素变红色 */
p {
  color: red;
}

/* 所有 <h1> 元素变蓝色 */
h1 {
  color: blue;
}

/* 所有 <div> 元素有边框 */
div {
  border: 1px solid black;
}

(2) 2. 类选择器(Class Selector)

通过 HTML 元素的 class 属性来匹配元素。类名用英文句点 . 开头。

CSS
/* 所有 class="highlight" 的元素 */
.highlight {
  background-color: yellow;
}

/* 只选中 class="center" 的 <p> 元素 */
p.center {
  text-align: center;
}

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

HTML
<p class="highlight center">这段文字既高亮又居中</p>

(3) 3. ID 选择器

通过 HTML 元素的 id 属性来匹配元素,用井号 # 开头。

CSS
/* 选中 id="header" 的元素 */
#header {
  background-color: #333;
  color: white;
}

注意:一个页面中同一个 ID 只能出现一次,ID 选择器通常用于唯一的元素。

(4) 4. 通配符选择器

使用星号 * 匹配文档中所有元素。

CSS
/* 重置所有元素的外边距和内边距 */
* {
  margin: 0;
  padding: 0;
}

通配符选择器很方便,但要注意性能——如果应用了复杂样式,会影响页面渲染速度。


2. 选择器的优先级(权重)

当多个选择器作用于同一个元素时,浏览器根据优先级决定哪个样式生效。CSS 有一套权重计算规则:

选择器类型 权重值
行内样式(style属性) 1000
ID 选择器 0100
类/属性/伪类选择器 0010
标签/伪元素选择器 0001
通配符选择器 0000

优先级从高到低为:

行内样式 > ID 选择器 > 类选择器 > 标签选择器

(1) 权重计算示例

CSS
/* 权重:0001 */
p {
  color: black;
}

/* 权重:0010 */
.text {
  color: blue;
}

/* 权重:0100 */
#special {
  color: green;
}

/* 权重:0011(类+标签) */
p.text {
  color: red;
}

对于同一个 <p class="text" id="special"> 元素,最终文字颜色会是绿色(ID 选择器权重最高)。

(2) !important

CSS 提供了一个"核武器"——!important,可以强制某个样式优先级最高:

CSS
p {
  color: red !important;
}

除非万不得已,不要使用 !important,它会让样式调试变得困难。优先通过增加选择器权重来解决问题。


3. 选择器的最佳实践

  1. 多用 class 选择器:class 可以复用,是最灵活的选择器
  2. 少用 ID 选择器:ID 唯一,不易复用,且权重太高容易覆盖问题
  3. 避免过度指定div.container ul li a 这种写法太具体,用 .nav-link 就够
  4. 保持选择器简洁:选择器越长越难维护,也影响性能

▶ 示例

结合元素、类和 ID 选择器的完整示例:

HTML
<!DOCTYPE html>
<html>
<head>
  <style>
    h1 { color: navy; }                          /* 标签选择器 */
    .highlight { background: yellow; }          /* 类选择器 */
    #unique { font-weight: bold; }              /* ID 选择器 */
    * { box-sizing: border-box; }                /* 通配符选择器 */
  </style>
</head>
<body>
  <h1>标题 1</h1>
  <p class="highlight">高亮段落。</p>
  <p id="unique">唯一元素。</p>
</body>
</html>
▶ 试一试

浏览器对匹配的元素应用每个规则:h1 变深蓝色,高亮段落有黄色背景,唯一元素加粗。


❓ 常见问题

Q class 和 id 选择器什么时候用哪个?
A id 在页面中只能出现一次,适合定位唯一的元素(如顶部导航、页脚);class 可以重复使用,适合给多个元素加相同样式。CSS 优先用 class,只有遇到唯一元素才用 id。
Q 后代选择器(空格)和子选择器(>)有什么区别?
A 后代选择器选中所有层级的子孙元素,子选择器只选中直接子元素。比如 div p 会选中 div 里所有层级的 p,而 div > p 只选中 div 的直接子 p,不管孙子辈的 p。
Q 通配选择器 * 会影响性能吗?
A 少量使用影响不大,但不建议在大范围上用。因为 * 匹配所有元素,浏览器会逐一检查,如果嵌套在复杂选择器里(如 #nav * li)可能造成性能浪费。全局 reset 用 * { box-sizing: border-box; } 这类简单用法没问题。

📖 小节

选择器是 CSS 的基础技能。掌握标签选择器、类选择器和 ID 选择器这三种基础选择器,就能完成大部分样式工作。理解选择器的优先级规则,能帮你避免"为什么样式没生效"的困惑。在实际开发中,类选择器是使用最频繁的,建议尽量用 class 来定义样式。

📝 作业

  1. 创建一个 HTML 页面,包含标题、段落和列表。
  2. 使用标签选择器设置所有段落的文字颜色。
  3. 使用类选择器为特定的元素设置不同的背景颜色(至少定义 2 个不同的类)。
  4. 使用 ID 选择器为页面中的一个元素设置特殊样式。
  5. 测试:给同一个元素同时应用标签、类和 ID 选择器,观察哪个优先级最高。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏