:active伪类在移动端IOS系统中失效

859 阅读1分钟
做移动端页面时发现: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