使用 :hover 和 :focus 伪类可增强交互反馈,如 .btn:hover 改变背景、input:focus 添加高亮,结合使用需遵循 LVHA 顺序并确保可访问性,常用于按钮、链接和表单元素。

在CSS中,将选择器与 :hover 和 :focus 伪类结合使用,可以为用户提供更丰富的交互反馈。这类组合常用于按钮、链接、表单元素等需要视觉响应的场景。
基本语法结构
你可以将任意选择器(如类选择器、属性选择器、后代选择器等)与 :hover 或 :focus 结合使用,语法如下:
选择器:hover { 样式规则 }选择器:focus { 样式规则 }
选择器:hover:focus { 样式规则 }
注意:当同时使用多个伪类时,顺序很重要,通常建议遵循“LVHA”原则(:link → :visited → :hover → :active),而 :focus 可以与其他状态叠加。
常见使用场景
以下是一些实用且常见的结合方式:
立即学习“前端免费学习笔记(深入)”;
- .btn:hover —— 鼠标悬停时改变背景色
- input:focus —— 输入框获得焦点时添加边框高亮
- a:hover, a:focus —— 同时定义链接在悬停和聚焦时的样式
- button:hover:focus —— 按钮在被键盘聚焦且鼠标悬停时的特殊效果
示例代码:
提升可访问性的技巧
确保键盘用户也能获得良好体验,合理使用 :focus 非常关键。
- 不要移除默认的 outline(可通过自定义样式替代)
- 让 :hover 和 :focus 视觉效果保持一致或互补
- 对非按钮元素(如div模拟按钮)添加 tabindex="0" 才能触发 :focus
例如:
.action-box { padding: 15px; border: 2px dashed #ccc; transition: all 0.3s; } .action-box:hover, .action-box:focus { border-color: #007bff; background-color: #f0f8ff; }如果元素不是原生可聚焦的,记得加上:
注意事项
某些浏览器对 :focus 的触发条件较严格,比如Safari默认不给div等元素加focus。确保测试跨浏览器行为。
- :hover 在触摸设备上可能表现异常(通常模拟为点击一次后保留 hover 效果)
- :focus 在移动端键盘弹出时依然有效,可用于表单引导
- 避免过度动画,影响用户体验
基本上就这些,合理组合选择器与伪类状态,能让界面既美观又易用。不复杂但容易忽略细节。










