沉浸式阅读
Beta
转载

hammer.js的常规使用

     订阅 JavaScript教程     2023-03-31     blog.csdn.net    网络转载    209    0    1    1    2023-03-31
学习要点:hammer.js是一个开源的库,他可以的实现在移端开发的大多数事件,如:点击、滑动、拖动、多点触控等事件。hammer.js不需要依赖任何其他的js框架,并且整个框架非常小Pan:拖动事件1、Pan:拖动事件!DOCTYPEhtmlhtmlh

hammer.js是一个开源的库,他可以的实现在移端开发的大多数事件,如:点击、滑动、拖动、多点触控等事件。hammer.js不需要依赖任何其他的js框架,并且整个框架非常小Pan:拖动事件


1、Pan:拖动事件

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <title>Document</title>
    <style type="text/css">
    div{width: 100px;height: 100px;background: red;position: absolute;}
    </style>
</head>
<body>
    <div></div>
</body>
<script type="text/javascript" src="Hammer.js"></script>
<script type="text/javascript">
    var div = document.querySelector("div");
    // 创建Hammer对象
    var hDiv = new Hammer(div);

    var divLeft = 0;
    var divTop = 0;
    // 拖拽事件
    hDiv.on("panstart",function(){
        divLeft = div.offsetLeft;
        divTop = div.offsetTop;
    })
    // 拖拽移动事件
    hDiv.on("panmove",function(e){
        console.log(e.deltaX);
        div.style.left = e.deltaX + divLeft + "px";
        div.style.top = e.deltaY + divTop + "px";
    })
</script>
</html>


2、Pinch:多指触控事件

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <title>Document</title>
    <style type="text/css">
    div{width: 200px;height: 200px;background: red;position: absolute;}
    </style>
</head>
<body>
    <div>手势放大缩小div</div>
</body>
<script type="text/javascript" src="Hammer.js"></script>
<script type="text/javascript">
    var div = document.querySelector("div");
    // 创建Hammer对象
    var hDiv = new Hammer(document);

    // pinch默认是不可用的,因为它们可能会导致元素被卡住,需要一下设置
    hDiv.get('pinch').set({ enable: true });

    var divW = div.offsetWidth;
    hDiv.on("pinchstart",function(e){
        divW = div.offsetWidth;
    })
    hDiv.on("pinchmove", function (e) {
        var w = divW*e.scale;
        if (w<100) {
            w=100
        }
        div.innerHTML= w;
        div.style.width = w + "px";
        div.style.height = w + "px";
    });
</script>
</html>


3、Press:点击事件

这个事件相当于PC端的Click事件,该不能包含任何的移动,最小按压时间为500毫秒,常用于我们在手机上用的“复制、粘贴”等功能。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <title>Document</title>
    <style type="text/css">
    div{width: 200px;height: 200px;background: red;position: absolute;}
    </style>
</head>
<body>
    <div></div>
</body>
<script type="text/javascript" src="Hammer.js"></script>
<script type="text/javascript">
    var div = document.querySelector("div");
    // 创建Hammer对象
    var hDiv = new Hammer(document);

    // 点击事件
    hDiv.on("press",function (e) {
        console.log(e)
        div.innerHTML = "press";
    })
</script>
</html>


4、Rotate:多手指成圆型旋转事件

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <title>Document</title>
    <style type="text/css">
    div{width: 200px;height: 200px;background: red;position: absolute;}
    </style>
</head>
<body>
    <div>手势放大缩小div</div>
</body>
<script type="text/javascript" src="Hammer.js"></script>
<script type="text/javascript">
    var div = document.querySelector("div");
    // 创建Hammer对象
    var hDiv = new Hammer(document);

    // pinch默认是不可用的,因为它们可能会导致元素被卡住,需要一下设置
    hDiv.get('rotate').set({ enable: true });

    hDiv.on("rotate", function (e) {
        div.innerHTML = e.angle;
        div.style.transform = "rotate("+e.angle+"deg)"
    });



</script>
</html>


5、Swipe:触屏滑动事件

在指定的dom区域内,一个手指快速的在触屏上滑动。即我们平时用到最多的滑动事件。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <title>Document</title>
    <style type="text/css">
    div{width: 200px;height: 200px;background: red;position: absolute;}
    </style>
</head>
<body>
    <div></div>
</body>
<script type="text/javascript" src="Hammer.js"></script>
<script type="text/javascript">
    var div = document.querySelector("div");
    // 创建Hammer对象
    var hDiv = new Hammer(document);

    // 滑动事件
    // hammer默认禁止了上下滑动事件:需要以下设置
    hDiv.get('swipe').set({ direction: Hammer.DIRECTION_ALL });

    hDiv.on("swipeleft swiperight swipeup swipedown",function(e){
        console.log(e.type)
        div.innerHTML = e.type;
    })
</script>
</html>


6、Tap:点击事件

该事件最大点击时间为250毫秒,如果超过250毫秒则按Press事件进行处理。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <title>Document</title>
    <style type="text/css">
    div{width: 200px;height: 200px;background: red;position: absolute;}
    </style>
</head>
<body>
    <div></div>
</body>
<script type="text/javascript" src="Hammer.js"></script>
<script type="text/javascript">
    var div = document.querySelector("div");
    // 创建Hammer对象
    var hDiv = new Hammer(document);

    // 点击事件
    hDiv.on("tap",function (e) {
        console.log(e)
        div.innerHTML = "tap";
    })
</script>
</html>


本文标题: hammer.js的常规使用

本文链接: https://www.mbkfw.com/course/1161.html (转载时请注明来源链接)

本文说明: 本文来源于网络转载,有问题请发送至: 邮箱/kf@dtmuban.com 进行修改或删除

特别鸣谢: 如果您觉得本文对您有帮助,请给我们一个小小的赞,收藏本文更利于反复学习哦!

 
destoon程序前端开发标签生成器

下班PC阅读不方便?

手机也可以随时学习开发

微信关注公众号“商企云服”
"模板开发网前端开发教学"
每日干货技术分享
 
0

圈友点评

文明上网理性发言,请遵守网络评论服务协议


色彩
×

《客户实名在线注册登记》售后一直都在!

关注

微信
关注

微信扫一扫
不同的环境体验

幸运大转盘,好礼等您拿

模板开发网公众号

模板开发网微信小程序

代授权

程序
授权

黑小二

联系
客服

很高兴为您服务
尊敬的用户,欢迎您咨询,我们为新用户准备了优惠好礼。咨询客服

联系客服:

在线QQ: 290948585

客服电话: 18605917465

E_mail邮箱: kf@dtmuban.com

微信公众号: 商企云服

微信小程序: 模板开发

QQ客服 微信客服DT授权代办 在线交谈 智能小云

工作时间:

周一至周五: 09:00 - 18:00

APP下载

安卓
APK

模板开发网安卓版APP

反馈

我要
反馈