前言
在开发移动端页面的时候,为了提高用户体验,通常会给被触控的元素加上一个效果来对用户的操作进行反馈。这种反馈主要有三种实现方式,有需要的朋友们下面来一起看看吧。
一、伪类: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>
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
本文向大家介绍Java两种方式实现动态代理,包括了Java两种方式实现动态代理的使用技巧和注意事项,需要的朋友参考一下 一、JDK动态代理 Java 在 java.lang.reflect 包中有自己的代理支持,该类(Proxy.java)用于动态生成代理类,只需传入目标接口、目标接口的类加载器以及 InvocationHandler 便可为目标接口生成代理类及代理对象。我们称这个Java技术为:
本文向大家介绍vue头部导航动态点击处理方法,包括了vue头部导航动态点击处理方法的使用技巧和注意事项,需要的朋友参考一下 1:DATA中两个变量, 2: 3:mothods: ps:下面看下vue实现动态头部 h5项目中,经常用到的头部是样式是一致的,只是左右按钮和中间标题会不一致。 vue主打组件化,为了减少代码冗余,可以将头部提取成一个单独的组件。接下来考虑是否需
本文向大家介绍js实现移动端导航点击自动滑动效果,包括了js实现移动端导航点击自动滑动效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js实现移动端导航点击滑动效果的具体代码,供大家参考,具体内容如下 移动端模拟导航可点击自动滑动 0.1.4。 导航可左右滑动,可点击边缘的一个,自动滚动下一个到可视范围【依赖于iscroll.js】。 废话不多说直接上代码: 截图: 提供demo
本文向大家介绍三种Android单击事件onclick的实现方法,包括了三种Android单击事件onclick的实现方法的使用技巧和注意事项,需要的朋友参考一下 onclick事件的定义方法,分为三种,分别为在xml中进行指定方法;在Actitivy中new出一个OnClickListenner();实现OnClickListener接口三种方式。 代码分别如下: 1. xml指定onclick
本文向大家介绍JavaScript事件处理的方式(三种),包括了JavaScript事件处理的方式(三种)的使用技巧和注意事项,需要的朋友参考一下 最近这段时间因为每天要修改网站,为网站做特效,所以看了很多的js接触事件,自己只会使用一小部分,有时用的时候也比较混乱,现在系统的整理了一下,特此分享到呐喊教程平台供大家参考下! 一、什么是JavaScript事件? 事件(Event)是JavaScr
本文向大家介绍vue.js 实现点击按钮动态添加li的方法,包括了vue.js 实现点击按钮动态添加li的方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇vue.js 实现点击按钮动态添加li的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。