:active in mobile

2017-09-11  本文已影响0人  老虎爱吃母鸡

overview

因为在移动端,我们没有hover的状态,但是往往我们需要对用户的点击作出反馈,让用户知道自己点击到了按钮

resolve

解决方案其实就是使用:active伪类,但是使用:active有几个注意事项

IOS中,:active状态只在touch event设置后才触发

On iOS, mouse events are sent so quickly that the down or active state is never received.

Safari Developer Library的Highlighting Elements部分最后有提到,因为mouse事件发送太快,所以active不会被接收到

解决方式就是显示设置touchstart事件,告诉浏览器去相应这个事件,可以直接写在body上

<body ontouchstart="">
    ...
</body>

也可以在直接在入口script文件设置

document.addEventListener('touchstart', function () {} )

button按钮存在默认反馈状态

IOS中的button按钮在默认情况下已经有了反馈的状态,表现为一层灰色遮罩,在移动端的safari点击会触发

解决方法是使用私有属性把遮罩设置为透明

html {
    -webkit-tap-highlight-color: rgba(0,0,0,0);
}

reference

Safari Developer Library

:active pseudo-class doesn't work in mobile safari

上一篇下一篇

猜你喜欢

热点阅读