伪类选择器用于定义元素的特殊状态,如悬停、点击或位置关系。通过selector:pseudo-class语法实现,例如a:visited设置已访问链接颜色;常用伪类包括:hover(鼠标悬停)、:focus(获得焦点)、:active(被激活)、:first-child(首个子元素)、:nth-child(n)(按位置选择)和:not()(排除特定元素);可组合使用如input:focus:invalid提升表单验证样式;注意LVHA顺序确保交互样式正确生效。

css伪类选择器用于定义元素的特殊状态,比如鼠标悬停、链接点击、第一个子元素等。它不是基于元素的标签名、类名或ID来选择,而是基于元素在页面中的行为或结构位置。掌握伪类选择器能让你更灵活地控制样式,无需依赖javaScript。
伪类选择器的基本语法
伪类选择器的语法是在选择器后加上冒号(:),然后接上伪类名称。基本格式如下:
selector:pseudo-class {
Property: value;
}
例如,为所有被点击过的链接设置颜色:
a:visited {
color: purple;
}
常用的伪类选择器及示例
:hover —— 鼠标悬停时的样式
当用户将鼠标指针移动到元素上时触发。
立即学习“前端免费学习笔记(深入)”;
button:hover {
background-color: #0056b3;
}
常用于按钮、链接等交互元素,提升用户体验。
:focus —— 元素获得焦点时的样式
当用户通过点击或Tab键选中输入框、按钮等可聚焦元素时生效。
input:focus {
outline: 2px solid blue;
}
对表单可访问性很重要,帮助用户识别当前操作的输入项。
:active —— 元素被激活时的样式
通常在鼠标按下但未释放时触发,适用于按钮和链接。
a:active {
color: red;
}
可以用来模拟“按下”效果。
:visited —— 已访问过的链接
仅适用于超链接(a标签),表示该链接已被用户点击过。
a:visited {
color: gray;
}
出于隐私考虑,浏览器限制了可修改的样式属性。
:first-child 和 :last-child —— 第一个和最后一个子元素
匹配父元素下的第一个或最后一个子元素。
li:first-child {
font-weight: bold;
}
li:last-child {
border-bottom: none;
}
适合用于列表项的首尾样式处理。
:nth-child(n) —— 匹配特定位置的子元素
根据子元素的位置来选择,n 可以是数字、关键字或公式。
tr:nth-child(odd) {
background-color: #f2f2f2;
}
实现表格隔行变色非常方便。也可以使用 even、3n+1 等表达式。
:not(selector) —— 排除特定元素
选择不符合指定条件的元素。
p:not(.special) {
color: black;
}
所有段落中,除了类名为 special 的,其他都应用该样式。
伪类组合使用技巧
你可以将多个伪类连用,实现更精细的控制。
input:focus:invalid {
border-color: red;
}
上面例子中,只有当输入框获得焦点且内容无效时才改变边框颜色。
也可结合类和其他选择器:
button.primary:hover {
transform: scale(1.05);
}
基本上就这些。伪类选择器是CSS中非常实用的功能,合理使用能显著提升页面的交互表现力,同时减少不必要的js代码。多练习常见场景,很快就能熟练掌握。不复杂但容易忽略细节,比如顺序问题(如LVHA顺序:link → visited → hover → active),注意这些会让样式更稳定可靠。