移动端事件及事件应用

目录

1.移动端事件基础
2.移动端常用的事件库
3.移动端轮播图css样式和响应
4.移动端轮播图图片延迟加载

1.移动端事件基础

PC端常用事件

事件名作用
click当鼠标点击时触发
mouseover当鼠标指针移动到元素上时触发
mouseout当鼠标指针移出元素时触发
mouseenter当鼠标指针移动到元素上时触发(不支持冒泡)
mouseleave当鼠标指针移出元素上时触发(不支持冒泡)
mousemove当鼠标指针移动到元素上时触发
mousedown当元素上按下鼠标按钮时触发
mouseup当在元素上释放鼠标按钮时触发
mousewheel当鼠标滚轮正在被滚动时运行的脚本
keydown在用户按下按键时触发
keyup当用户释放按键时触发
load页面结束加载之后触发
scroll当元素滚动条被滚动时运行的脚本
blur元素失去焦点时运行的脚本
focus当元素获得焦点时运行的脚本
change在元素值被改变时运行的脚本


移动端常用事件

事件名作用
click当点击时触发(单击)
load页面结束加载之后触发
scroll当元素滚动条被滚动时运行的脚本
blur元素失去焦点时运行的脚本
focus当元素获得焦点时运行的脚本
change在元素值被改变时运行的脚本
input代替keyup、keydown
touch事件模型处理单手指操作
gesture事件模型处理多手指操作

touch事件模型

事件名作用
touchstart手指按到屏幕上
touchmove手指在屏幕上滑动
touchend手指离开屏幕
touchcancle特殊情况下关闭/退出时触发

gesture事件模型

事件名作用
gesturestart当鼠标点击时触发
gesturechange当鼠标点击时触发
gestureend当鼠标点击时触发

touch事件的属性:

属性名作用
type事件类型
target事件源
preventDefault(returnValue)阻止默认行为
stopPropagation(cancleBubble)停止事件的传播
touches[0].clientX触碰位置的x值
changedTouches当前的值和离开的值

changedTouches和touches都是手指信息的集合(TouchList),touches获取到值的必备条件是只有手指还在屏幕上才可以获取,所以在touchend事件中如果想获取离开的瞬间坐标只能用changedTouches获取

click

在移动端属于单击事件,不是点击事件, 在移动端的项目中经常会区分单击做什么和双击做什么,所以移动端的浏览器在识别click的时候,只有确定是单击后才会把它执行。在移动端使用click会存在300ms的延迟,浏览器在第一次点击结束后还需要等待300ms,看是否触发了第二次点击,如果触发了第二次,就不属于click了,没有触发第二次才属于click。

例如:点击方块,旋转一周:
效果图:
这里写图片描述

使用click:

<script type="text/javascript">
    var oBox = document.querySelector("#box");
    oBox.addEventListener("click", function () {
        this.style.webkitTransform = "rotate(360deg)";
    }, false);
</script>

使用touch:
发生滑动,变成红色;点击旋转:

<script type="text/javascript">
    function on(curEle, type, fn) {
        curEle.addEventListener(type, fn, false);
    }
    var oBox = document.querySelector("#box");
    //使用touch事件模型模拟实现点击事件操作,包含点击和双击
    on(oBox, "touchstart", function (ev) {
        var point = ev.touches[0];
        this["strX"] = point.clientX;
        this["strY"] = point.clientY;
        this["isMove"] = false;
    });
    on(oBox, "touchmove", function (ev) {
        var point = ev.touches[0];
        var newX = point.clientX,
            newY = point.clientY;
        //判断是否发生滑动,需要判断偏移的值是否在30px以内
        if (Math.abs(newX - this["strX"]) > 30 || Math.abs(newY - this["strY"]) > 30) {
            this["isMove"] = true;
        }
    });
    on(oBox, "touchend", function (ev) {
        if (this["isMove"] === false) {
            //点击
            this.style.webkitTransitionDuration = "1s";
            this.style.webkitTransform = "rotate(360deg)";
            var delayTimer = window.setTimeout(function () {
                this.style.webkitTransitionDuration = "0s";
                this.style.webkitTransform = "rotate(0deg)";
            }.bind(this), 1000);
        } else {
            this.style.background = "red";
        }
    });
</script>

使用fastclick插件(解决移动端使用click导致的300ms延迟的问题):

<script type="text/javascript">
    FastClick.attach(document.body);
    var oBox = document.querySelector("#box");
    oBox.addEventListener("click", function () {
        this.style.webkitTransform = "rotate(360deg)";
        this.style.webkitTransitionDuration = "1s";
        this.style.webkitTransform = "rotate(360deg)";
        var delayTimer = window.setTimeout(function () {
            this.style.webkitTransitionDuration = "0s";
            this.style.webkitTransform = "rotate(0deg)";
        }.bind(this), 1000);
    }, false);
</script>

点击、单击、双击、长按、滑动

单击和双击(300ms)
点击和长按(750ms)
点击和滑动(x或y偏移的距离是否在30px以内,超过30px是滑动)
左右滑动和上下滑动(x轴偏移的距离>y轴偏移的距离=左右滑,相反就是上下滑)
左滑和右滑(偏移的距离>0=右滑,相反左滑)

2.移动端常用的事件库

FastClick.js:解决click事件的300ms的延迟
Touch.js:百度云手势事件库 https://github.com/Clouda-team/touch.code.baidu.com
hammer.js:同上
Zepto.js:被誉为移动端的小型jQuery。
https://github.com/ZhaoJingnian/zepto
jQuery由于是在pc端使用的,所以代码中包含大量的对于IE的兼容处理,而Zepto只应用于移动端开发,所以在jQuery的基础上没有对低版本的IE进行支持。
jQuery提供了很多的选择器类型及DOM的操作方法,但是Zepto中只是实现了部分常用的选择器和方法,例如:jQuery中的动画方法有animate、hide、show、toggle、fadeIn、fadeOut、fadeToggle、slideDown、slideUp、slideToggle….但是Zepto中只有,所以Zepto的代码大小比jQuery小很多。
Zepto专门为移动端开发而诞生,所以相对于jQuery来说更适合移动端:Zepto的animate动画方法支持了css3动画的操作,Zepto专门的准备了移动端常用的事件操作。
tap:点击、singleTap:点击、doubleTap:双击、longTap:长按、swipe:滑动、swipeUp:上滑、swipeDown:下滑、swipeLeft:左滑、swipeRight:下滑

3.移动端轮播图css样式和响应
4.移动端轮播图图片延迟加载
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值