工具简介
CSS(层叠样式表)选择器是前端开发中的基础与核心,它定义了如何选择HTML文档中的元素并应用样式规则。随着Web标准的不断发展,CSS选择器从CSS2到CSS4经历了显著的功能增强与语法扩展。掌握各类选择器的特性和应用场景,对于构建现代化、可维护的Web界面至关重要。
下面将简要介绍一下常用的 CSS 选择器,以供开发时参考。
CSS2:基础选择器
CSS2 规范奠定了CSS选择器的基础,这些选择器至今仍是日常开发中最常用的工具。
2.1 基本选择器
元素选择器:通过HTML元素名称选择元素
p {
color: #333;
line-height: 1.5;
}
类选择器:通过class属性选择元素,使用点号(.)前缀
.button {
padding: 8px 16px;
border-radius: 4px;
}
ID选择器:通过id属性选择元素,使用井号(#)前缀
#header {
height: 60px;
background-color: #f8f9fa;
}
通配符选择器:匹配所有元素
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
2.2 属性选择器
CSS2引入了基础的属性选择器,允许根据元素属性进行选择:
[attribute]:选择带有指定属性的元素[attribute=value]:选择属性值完全等于value的元素[attribute~=value]:选择属性值包含特定词汇value的元素[attribute|=value]:选择属性值以value或value-开头的元素
input[type="text"] {
border: 1px solid #ccc;
}
a[target="_blank"]::after {
content: " ↗";
}
2.3 关系选择器
后代选择器:选择特定元素内部的所有指定后代元素
article p {
margin-bottom: 1em;
}
子元素选择器:仅选择直接子元素
nav > ul {
list-style: none;
}
相邻兄弟选择器:选择紧接在另一元素后的兄弟元素
h2 + p {
margin-top: 0.5em;
}
CSS3:功能增强
CSS3极大地扩展了选择器的能力,引入了更多精确匹配和结构选择的方法。
3.1 属性选择器增强
CSS3新增了三种属性匹配模式:
[attribute^=value]:选择属性值以value开头的元素[attribute$=value]:选择属性值以value结尾的元素[attribute*=value]:选择属性值包含value子字符串的元素
a[href^="https"] {
color: green;
}
img[src$=".jpg"] {
border: 2px solid #ddd;
}
div[class*="container"] {
max-width: 1200px;
margin: 0 auto;
}
3.2 结构伪类选择器
结构伪类根据元素在文档树中的位置进行选择:
:first-child:选择作为其父元素第一个子元素的元素:last-child:选择作为其父元素最后一个子元素的元素:nth-child(n):选择作为其父元素第n个子元素的元素:nth-last-child(n):从末尾开始计数选择子元素:only-child:选择作为其父元素唯一子元素的元素
li:first-child {
font-weight: bold;
}
tr:nth-child(even) {
background-color: #f9f9f9;
}
div:only-child {
width: 100%;
}
3.3 用户行为伪类
:hover:鼠标悬停时的状态:active:元素被激活时的状态:focus:元素获得焦点时的状态:enabled/:disabled:启用或禁用状态的表单元素:checked:被选中的单选或复选框
button:hover {
background-color: #0056b3;
transform: translateY(-1px);
}
input:focus {
outline: 2px solid #4d90fe;
border-color: #4d90fe;
}
3.4 其他CSS3伪类
:not(selector):否定伪类,选择不匹配指定选择器的元素:empty:选择没有子元素的元素:root:选择文档的根元素(HTML中通常是html元素)
div:not(.sidebar) {
padding: 20px;
}
p:empty {
display: none;
}
:root {
--primary-color: #007bff;
}
CSS4:前沿扩展
CSS4选择器规范进一步扩展了选择能力,提供了更精细的控制方法。
4.1 逻辑组合伪类
:is() 伪类:接受选择器列表作为参数,匹配列表中任意选择器可选中的元素
:is(header, footer, section) a {
color: #0366d6;
}
/* 等效于 */
header a, footer a, section a {
color: #0366d6;
}
:where() 伪类:与:is()类似,但优先级始终为0
:where(article, aside) p {
line-height: 1.6;
}
:has() 伪类:选择包含特定子元素的父元素(目前浏览器支持有限)
div:has(> img) {
border: 1px solid #ccc;
}
4.2 增强的属性选择器
CSS4允许在属性选择器中使用大小写敏感修饰符:
/* 不区分大小写(CSS4新增) */
a[href*="example" i] {
color: purple;
}
/* 区分大小写(默认行为) */
a[href*="Example"] {
color: blue;
}
4.3 其他CSS4选择器
方向伪类:根据文本方向选择元素
p:dir(ltr) {
text-align: left;
}
p:dir(rtl) {
text-align: right;
}
范围伪类:针对类似视频播放器进度条等UI组件
input[type="range"]:in-range {
border-color: green;
}
input[type="range"]:out-of-range {
border-color: red;
}
选择器优先级与最佳实践
5.1 优先级计算规则
CSS选择器优先级按照以下规则计算:
- 内联样式:1000
- ID选择器:100
- 类选择器、属性选择器、伪类:10
- 元素选择器、伪元素:1
- 通配符、关系选择器:0
当优先级相同时,后定义的样式会覆盖先定义的样式。
5.2 选择器性能优化
- 避免使用过于复杂的选择器
- 优先使用类选择器而非多层嵌套的关系选择器
- 谨慎使用通配符选择器
- 合理利用继承属性减少选择器使用
5.3 可维护性建议
- 使用有意义的类名和ID
- 保持选择器简洁明了
- 采用一致的命名规范(如BEM、OOCSS)
- 适当使用CSS预处理器(如Sass、Less)增强可读性
总结
从CSS2到CSS4,选择器的能力不断增强,为前端开发人员提供了更精确、更高效的元素选择方式。掌握这些选择器的特性和适用场景,能够显著提升样式代码的质量和开发效率。在实际项目中,应根据浏览器兼容性要求和具体需求,合理选择和使用各类选择器,构建可维护、高性能的Web界面。
希望本工具列出的常见 CSS 选择器对你的日常工作带来一定的帮助。