如果给按钮定义 :hover
样式,在 iPhone 上按钮点击一次是 hover 态,再点击一次 hover 态才会消失,这显然不是我们想要的,继而想通过定义 :active
样式来实现按钮按下时的效果,但发现定义的 active 样式在 iPhone 上点击时没有任何效果。 搜索后发现,只需添加一段 js 即可:
document.addEventListener("touchstart", function() {},false);
另一个方案,可以在 body 上添加 ontouchstart=""
<body ontouchstart="">
原理:Safari 默认禁用了元素的 active
样式,我们通过声明 touchstart
来覆盖默认事件,就可以让 active
样式重新激活。
此外,默认点击按钮会有一个灰色的外框,通过这段 CSS 可以清除:
html {
-webkit-tap-highlight-color: rgba(0,0,0,0);
}