做移动端页面时发现:active伪类在ios系统中的点击效果失效,后面通过网上查找资料找到了一些解决方案。在这记录下此问题。
一、失效原因:
参考Safari Developer Library知道失效的原因是,在iOS上,鼠标事件发送的速度非常快,以至于无法接收到关闭或激活状态。因此,:active需在HTML元素上设置了触摸事件时才能触发伪状态(例如,在元素上设置ontouchstart事件)
二、解决方案:
1、在body标签上添加ontouchstart事件
<!DOCTYPE html>
<html><body ontouchstart></body></html>
2、在元素节点上添加ontouchstart事件
<button ontouchstart="" >Testing Touch on iOS</button>
3、用js给全局加一个touchstart事件
document.addEventListener("touchstart", function() {},false);
注意:此方法在滚动页面时触摸某个元素也会激活:active伪状态。
参考网址:
Safari Developer Library
:active pseudo-class doesn't work in mobile safari