CSS选择器用于匹配HTML文档中的元素,并为匹配到的元素应用对应的样式规则,大部分开发者日常使用较多的是类选择器、ID选择器和元素选择器,但实际上CSS还提供了很多功能强大的选择器,能大幅简化样式编写逻辑。

属性选择器
属性选择器可以根据元素的属性及属性值来匹配元素,不需要额外给元素添加特定的类名,适合处理有统一属性特征的元素。
存在性匹配
匹配所有包含指定属性的元素,不管属性值是什么。
/* 匹配所有带有disabled属性的input元素 */
input[disabled] {
background-color: #f5f5f5;
cursor: not-allowed;
}
精确值匹配
匹配属性值完全等于指定值的元素。
/* 匹配type属性为checkbox的input元素 */
input[type="checkbox"] {
width: 16px;
height: 16px;
}
模糊值匹配
支持多种模糊匹配规则,满足不同的属性值匹配需求。
/* 匹配href属性以https开头的a元素 */
a[href^="https"] {
color: #1890ff;
}
/* 匹配src属性以.png结尾的img元素 */
img[src$=".png"] {
border: 1px solid #eee;
}
/* 匹配class属性中包含text字样的元素 */
[class*="text"] {
font-size: 14px;
}
伪类选择器
伪类选择器用于选择处于特定状态的元素,不需要在HTML中添加额外的标记,就能实现动态样式效果。
表单相关伪类
针对表单元素的不同状态进行匹配,减少JS操作样式的逻辑。
/* 匹配获得焦点的input元素 */
input:focus {
border-color: #409eff;
outline: none;
}
/* 匹配被选中的option元素 */
option:checked {
background-color: #f0f9eb;
}
/* 匹配必填但未填写的input元素 */
input:required:invalid {
border-color: #f56c6c;
}
结构伪类
根据元素在文档树中的位置进行匹配,适合处理列表、表格等结构化内容。
/* 匹配ul下的第一个li元素 */
ul li:first-child {
font-weight: bold;
}
/* 匹配ul下的第偶数个li元素 */
ul li:nth-child(even) {
background-color: #fafafa;
}
/* 匹配p元素后面紧邻的span元素 */
p + span {
color: #666;
}
/* 匹配所有作为某个元素唯一子元素的p元素 */
p:only-child {
margin: 0 auto;
}
其他实用选择器
除了上述两类选择器,还有一些场景化很强的实用选择器。
/* 匹配页面中被选中的文本内容 */
::selection {
background-color: #b3d4fc;
color: #333;
}
/* 匹配空内容的元素 */
div:empty {
display: none;
}
/* 匹配不是p元素的所有元素 */
:not(p) {
line-height: 1.5;
}
合理使用这些不常见的CSS选择器,可以减少HTML中冗余的类名定义,让样式规则更清晰,同时提升页面的可维护性。开发者可以根据实际的业务场景,灵活组合不同的选择器,实现更高效的样式开发。
CSS_selector前端样式伪类选择器属性选择器修改时间:2026-06-29 11:06:22