这篇文章主要介绍web开发移动端如何实现点击动态处理,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
一、伪类:active
:active伪类常用于设定点击状态下或其他被激活状态下一个链接的样式。最常用于锚点<a href="#">这种情况,一般主流浏览器下也支持其他元素,如button等。在多按键的鼠标系统中,:active只适用于主按键,目前的大部分情况都是左键即主键。
该伪类下定义的CSS样式只在按下鼠标按钮与释放鼠标按钮之间的短暂瞬间被触发显示。使用键盘的tab键也可以触发:active状态。
值得注意的是:伪类是一种比较方便的实现方式,但在ios中,需要在相关的元素或者body
上绑定touchstart
事件才能使元素的:active
生效。
By default, Safari Mobile does not use the :active state unless there is a touchstart event handler on the relevant element or on the .—MDN
document.body.addEventListener('touchstart', function (){});
也可以直接在body
上添加
<body touchstart>
<!-- ... -->
</body>
此外,由于移动端300ms延迟问题,触摸反馈会有延迟,可以使用Fastclick解决。
二、webkit-tap-highlight-color
这个属性并不是标准的,被用于设置超链接被点击时高亮的颜色,在ios设备上表现为一个半透膜的灰色背景,可以设置-webkit-tap-highlight-color
为任何颜色,例如rgba(0,0,0,0.5)
,如果未设置颜色的alpha
值,将使用默认的透明度,alpha
为0时,将禁用高亮,alpha
为1时,元素在点击时将不可见
大部分安卓设备也支持这个属性,但是显示的效果不同,表现为一个边框, -webkit-tap-highlight-color
的值为边框的颜色
三、touch事件
当用户手指放在移动设备在屏幕上滑动会触发的touch事件。原理就是touchstart
时,给元素添加className
,touchstend
时移除className
<!-- 省略 -->
<li data-touch="true">
点我
</li>
<!-- 省略 -->
<script>
document.body.addEventListener('touchstart', function(e){
var target = e.target
if(target.dataset.touch === 'true'){
target.classList.add('active')
}
})
document.body.addEventListener('touchmove', function(e){
var target = e.target,
rect = target.getBoundingClientRect()
if(target.dataset.touch === 'true'){
// 移出元素时,取消active状态
if(e.changedTouches[0].pageX<rect.left || e.changedTouches[0].pageX>rect.right || e.changedTouches[0].pageY<rect.top || e.changedTouches[0].pageY>rect.bottom){
target.classList.remove('active')
}
}
})
document.body.addEventListener('touchcancel', function(e){
var target = e.target
if(target.dataset.touch === 'true'){
target.classList.remove('active')
}
})
document.body.addEventListener('touchend', function(e){
var target = e.target
if(target.dataset.touch === 'true'){
target.classList.remove('active')
}
})
</script>
以上是“web开发移动端如何实现点击动态处理”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注天达云行业资讯频道!