- 移动端 Safari中
:hover
导致的两次点击问题
问题描述:在移动端的Safari中,如果使用了:hover
会导致两次点击事件的发生,如a
标签链接到一个新地址,如果a
标签使用了:hover
就会造成第一次点击时响应:hover
,第二次才响应a
标签的跳转。
解决方案:
1. 监听`ontouchstart`事件
给body添加一个`no-touch`的class,用于限制`:hover`的作用域。当document中存在`ontouchstart`事件时,移除该class。
<body class="no-touch"></body>
<script>
if('ontouchstart' in document) {
document.body.removeAttribute('class')
}
</script>
<style>
.no-touch .xx:hover {
...
}
</style>