CSS 样式表里面什么时候用 id,什么时候用 class?一个简单的原则是:网页框架中真正唯一的部分可以用 id,可复用的样式和细节样式用 class。同时,不需要给每个元素都加上 id 或 class;该用继承、元素选择器或结构选择器的时候,就让 CSS 自然地继承和匹配。总之,id 和 class 的数量应尽量控制得少而清楚。
Table of Contents
ID & Class
ID
id 在一个 HTML 文档中应该是唯一的,不能重复。它适合标识页面上只出现一次的元素,例如主导航、页脚、某个表单输入框,或者页面锚点。
常见用途包括:
- 页面锚点:
<section id="comments"> - 表单关联:
<label for="email">对应<input id="email"> - JavaScript 精确查找某个唯一元素
- 少量页面级结构标识,例如
#header、#main、#footer
不过,写 CSS 时不要为了“选择更准确”就大量使用 id。id 选择器权重较高,后期覆盖样式会比较麻烦。很多情况下,用 class 更灵活。
Class
class 可以重复使用。它适合表达一类样式、一种状态或一个可复用组件,例如按钮、提示框、红色文字、当前选中项等。
常见用途包括:
- 可复用样式:
.button、.red、.muted - 组件样式:
.card、.nav-item、.post-title - 状态样式:
.active、.disabled、.error - 多个元素共享同一套外观
同一个元素也可以同时拥有多个 class:
<p class="message error">请输入正确的邮箱地址。</p>
这样可以把通用样式和状态样式分开写:
.message {
padding: 8px 12px;
}
.error {
color: #c00;
}
示例
下面的例子中,#red 只应该对应页面中的一个元素,而 .red 可以被多个元素重复使用:
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>ID 与 Class 示例</title>
<style>
#red {
color: #f00;
}
.red {
color: #f00;
}
</style>
</head>
<body>
<p id="red">id</p>
<p class="red">class</p>
<p class="red">class2</p>
</body>
</html>
实际选择建议
如果一个元素在页面中只会出现一次,并且需要作为锚点、表单关联或脚本定位对象,可以考虑使用 id。如果只是为了套用样式,优先使用 class。
如果多个元素要共享同一种样式,应该使用 class。例如多个段落都需要红色文字,就不要给它们分别写不同的 id,而是统一使用 .red。
如果元素本身已经能通过结构清楚地选中,就不一定需要额外加 class:
.article h2 {
margin-top: 2em;
}
.article p {
line-height: 1.8;
}
这样比给每个标题和段落都加 class 更干净。
简单总结:
id:唯一、少用、适合锚点和精确定位。class:可重复、常用、适合样式复用。- CSS 写得越清楚越好,不是
id和class越多越好。
