:active伪类可实现按钮点击反馈,需配合transform缩放或位移、transition动画及移动端兼容处理,避免无响应或样式卡顿。
用 :active 伪类可以轻松实现按钮点击时的按压反馈,关键是控制样式变化的时机和幅度,让视觉反馈自然、及时。
给按钮添加 :active 样式,通常调整 transform(如缩放或位移)、background-color 或 box-shadow,模拟被按下的效果:
transform: scale(0.98) 让按钮轻微缩小,最常用也最符合直觉transform: translateY(2px) 模拟下陷感,配合 box-shadow: inset 效果更佳
才有平滑效果:active 本身是瞬时状态,不加过渡动画会“闪一下”就消失。要在按钮的默认样式中提前定义 transition:
transition: all 0.15s ease;
transition: transform 0.1s; —— 如果还改了背景色,没包含进去就会突变部分 iOS Safari 和老版安卓浏览器默认不触发 :active,需手动启用:
或按钮父容器加 cursor: pointer;
中加
touchstart / touchend 动态加 class,但纯 CSS 场景优先用上面两个技巧如果点击后样式没变,或松手后没恢复,大概率是这些原因:
但没加 tabindex="0" 或 role="button")
- 父元素设置了
pointer-events: none,拦截了事件
-
:active 的样式被更高优先级的选择器覆盖(检查 DevTools 中是否被划掉)
- 用了
transform: scale() 但父容器有 overflow: hidden,导致缩放后被裁剪