1.触摸事件touch

touchstart 手指放在屏幕上触发
touchmove 手指在屏幕上移动,连续触发
touchend 手指离开屏幕触发
touchcancel 当系统停止跟踪时触发,该事件暂时用不到
注意:
1.移动端只能事件只能通过监听函数添加,不能用on添加
2.移动端当中就不要用鼠标的事件
3.移动端的事件会触发浏览器的默认行为,所以在调用事件的时候要把默认行为阻止了ev.preventDefault。
demo:
document.addEventListener('touchstart',function(ev){
ev.preventDefault();
});
var box=document.getElementById("box");
box.addEventListener('touchstart',function(){
this.innerHTML='手指按下了';
});
box.addEventListener('touchmove',function(){
this.innerHTML='手指移动了';
});
box.addEventListener('touchend',function(){
this.innerHTML='手指离开了';
});
2.touch事件对象
ev.touches 当前屏幕的手指列表
ev.targetTouches 当前元素上的手指列表
ev.changedTouches 触发当前事件的手指列表
每个touch对象都包含了以下几个属性(打印ev.touches如下):
clientX //触摸目标在视口中的X坐标。
clientY //触摸目标在视口中的Y坐标。
Identifier //标示触摸的唯一ID。
pageX //触摸目标在页面中的X坐标。
pageY //触摸目标在页面中的Y坐标。
screenX//触摸目标在屏幕中的X坐标。
screenY //触摸目标在屏幕中的Y坐标。
target // 触摸的DOM节点目标。
demo:
var box=document.getElementById("box");
//相当于mousedown
box.addEventListener('touchstart',function(ev){
//console.log(ev.touches);
this.innerHTML=ev.touches.length;//按下手指数
});
3.设备加速度事件devicemotion
devicemotion 封装了运动传感器数据的事件,可以获取手机运动状态下的运动加速度等数据。
其中加速度的数据包含以下三个方向:
x:横向贯穿手机屏幕;
y:纵向贯穿手机屏幕;
z:垂直手机屏幕
鉴于有些设备没有排除重力的影响,所以该事件会返回两个属性:
1、accelerationIncludingGravity(含重力的加速度)
2、acceleration(排除重力影响的加速度)
注意:这个事件只能放在window身上
demo1:显示重力加速度的值
window.addEventListener('devicemotion',function(ev){
var motion=ev.accelerationIncludingGravity; box.innerHTML='x:'+motion.x+'<br/>'+'y:'+motion.y+'<br/>'+'z:'+motion.z;
});
demo2:方块跟着重力左右移动
window.addEventListener('devicemotion',function(ev){
var motion=ev.accelerationIncludingGravity;
var x=parseFloat(getComputedStyle(box).left);//box目前的left值
box.style.left=x+motion.x+'px';
});
demo3:摇一摇应用原理
var box=document.getElementById('box');
var lastRange=0; //上一次摇晃的幅度
var isShake=false; //决定用户到底有没有大幅度摇晃
window.addEventListener('devicemotion',function(ev){
var motion=ev.accelerationIncludingGravity;
var x=Math.abs(motion.x);
var y=Math.abs(motion.y);
var z=Math.abs(motion.z);
var range=x+y+z; //当前摇晃的幅度
if(range-lastRange>100){
//这个条件成立说明用户现在已经在大幅度摇晃
isShake=true;
}
if(isShake && range<50){
//这个条件成立,说明用户摇晃的幅度很小了就要停了
box.innerHTML='摇晃了';
isShake=false;
}
});
4.设备方向事件deviceorientation
deviceorientation 封装了方向传感器数据的事件,可以获取手机静止状态下的方向数据(手机所处的角度、方位和朝向等)
ev.beta 表示设备在x轴上的旋转角度,范围为-180~180。它描述的是设备由前向后旋转的情况。
ev.gamma 表示设备在y轴上的旋转角度,范围为-90~90。它描述的是设备由左向右旋转的情况。
ev.alpha 表示设备沿z轴上的旋转角度,范围为0~360。
注意:这个事件只能放在window身上
demo:
window.addEventListener('deviceorientation',function(ev){
box.innerHTML='x轴倾斜:'+ev.beta.toFixed(1)+'</br>y轴倾斜:'+ev.gamma.toFixed(1)+'</br>z轴倾斜:'+ev.alpha.toFixed(1);
});
5.手势事件gesture
IOS的Safari还引入了一组手势事件。当两个手指触摸屏幕时就会产生手势,手势通常会改变显示项的大小,或者旋转显示项。有三个手势事件,分别如下:
gesturestart 当一个手指已经按在屏幕上,而另一个手指又触摸在屏幕时触发
gesturechange 当触摸屏幕的任何一个手指的位置发生改变的时候触发
gestureend 当任何一个手指从屏幕上面移开时触发
ev.rotation 表示手指变化引起的旋转角度,负值表示逆时针,正值表示顺时针,从0开始。
ev.scale 表示两个手指之间的距离情况,向内收缩会缩短距离,这个值从1开始,并随距离拉大而增长。
注意:
1. gesture事件目前只有 IOS 2.0以上支持,安卓的暂时没有支持。
2. 一定要阻止浏览器的默认行为。
demo1:多指旋转
var startDeg=0; //上次旋转后的角度
//两个或者两个以上手指按下
box.addEventListener('gesturestart',function(){
this.style.background='blue';
//rotate(90deg)
if(this.style.transform){
startDeg=parseFloat(this.style.transform.split('(')[1]);
}
});
//两个或者两个以上手指变换
box.addEventListener('gesturechange',function(ev){
/*this.style.background='black';
this.innerHTML=ev.rotation;*/
this.style.transform='rotate('+(ev.rotation+startDeg)+'deg)';
});
//两个或者两个以上手指抬起
box.addEventListener('gestureend',function(){
this.style.background='green';
});
demo2:多指缩放
document.addEventListener('touchstart',function(ev){
ev.preventDefault();
});
document.addEventListener('touchmove',function(ev){
ev.preventDefault();
});
var box=document.getElementById("box");
var startScale=1; //上次缩放后的角度
//两个或者两个以上手指按下
box.addEventListener('gesturestart',function(){
this.style.background='blue';
//rotate(90deg)
if(this.style.transform){
startScale=parseFloat(this.style.transform.split('(')[1]);
}
});
//两个或者两个以上手指变换
box.addEventListener('gesturechange',function(ev){
/*this.style.background='black';
this.innerHTML=ev.rotation;*/
var sc=ev.scale*startScale;
sc=sc<0.5?0.5:sc;//设置最小缩放到0.5
this.style.transform='scale('+sc+')';
});
//两个或者两个以上手指抬起
box.addEventListener('gestureend',function(){
this.style.background='green';
});
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# 移动端
# 事件
# 浅谈移动端之js touch事件 手势滑动事件
# jQuery 移动端拖拽(模块化开发
# 触摸事件
# webpack)
# 移动端js触摸事件详解
# 按下
# 放在
# 的是
# 任何一个
# 装了
# 屏幕上
# 口中
# 重力加速度
# 几个
# 多指
# 状态下
# 鼠标
# 就不
# 要把
# 要用
# 暂时没有
# 停了
# 时就
# 不能用
# 所处
相关文章:
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
如何在宝塔面板中创建新站点?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
怀化网站制作公司,怀化新生儿上户网上办理流程?
c# 服务器GC和工作站GC的区别和设置
建站之星各版本价格是多少?
如何选择PHP开源工具快速搭建网站?
北京企业网站设计制作公司,北京铁路集团官方网站?
如何通过.red域名打造高辨识度品牌网站?
北京制作网站的公司,北京铁路集团官方网站?
再谈Python中的字符串与字符编码(推荐)
一键网站制作软件,义乌购一件代发流程?
建站主机选哪种环境更利于SEO优化?
Android自定义listview布局实现上拉加载下拉刷新功能
制作门户网站的参考文献在哪,小说网站怎么建立?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
Swift中switch语句区间和元组模式匹配
如何在西部数码注册域名并快速搭建网站?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
如何选择高效稳定的ISP建站解决方案?
如何用IIS7快速搭建并优化网站站点?
建站之星如何实现网站加密操作?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
如何挑选最适合建站的高性能VPS主机?
建站org新手必看:2024最新搭建流程与模板选择技巧
相册网站制作软件,图片上的网址怎么复制?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
企业微网站怎么做,公司网站和公众号有什么区别?
如何快速查询网址的建站时间与历史轨迹?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
购物网站制作公司有哪些,哪个购物网站比较好?
深圳网站制作案例,网页的相关名词有哪些?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
香港服务器部署网站为何提示未备案?
建站之星如何快速生成多端适配网站?
建站主机与服务器功能差异如何区分?
如何在香港免费服务器上快速搭建网站?
如何续费美橙建站之星域名及服务?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
高端建站三要素:定制模板、企业官网与响应式设计优化
教学论文网站制作软件有哪些,写论文用什么软件
?
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
详解jQuery中基本的动画方法
广德云建站网站建设方案与建站流程优化指南
Python多线程使用规范_线程安全解析【教程】
*请认真填写需求信息,我们会在24小时内与您取得联系。