美文网首页
移动端touch相关事件

移动端touch相关事件

作者: 亨锅锅 | 来源:发表于2018-11-29 15:52 被阅读0次
  • touchstart : 当手指触摸到指定元素时触发
  • touchmove: 当手指在指定元素上移动时触发
  • touchend: 当手指离开指定元素时触发
<script>
    /*
    注意点:
    1.如果要添加移动端的touch相关的事件, 推荐使用addEventListener来添加
    不推荐使用on来添加
    2.如上的事件, 当前在PC端无效
     */
    var oDiv = document.querySelector("div");
    oDiv.addEventListener("touchstart", function () {
        console.log("手指按下");
    });
    oDiv.addEventListener("touchmove", function () {
        console.log("手指移动");
    });
    oDiv.addEventListener("touchend", function () {
        console.log("手指离开");
    });

</script>

点透现象

  • 如果两个元素是重叠的(一个在另一个上面)
  • 并且上面一个监听了touchstart事件, 下面一个监听了click事件
  • 那么如果上面一个元素触发touchstart事件之后消失了, 那么就会出现点透问题
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>touch事件的点透问题</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        div{
            font-size: 40px;
            text-align: center;
        }
        .click{
            position: absolute;
            left: 50%;
            transform: translateX(-50%);
            top: 100px;
            width: 300px;
            height: 300px;
            background: red;
        }
        .tap{
            position: absolute;
            left: 50%;
            transform: translateX(-50%);
            top: 150px;
            width: 200px;
            height: 200px;
            background: green;
        }
    </style>

</head>
<body>
<div class="click">click</div>
<div class="tap">touch</div>

<script>
    var oClick = document.querySelector(".click");
    var oTap = document.querySelector(".tap");

    oTap.addEventListener("touchstart", function () {
        // 如果两个元素是重叠的(一个在另一个上面)
        // 并且上面一个监听了touchstart事件, 下面一个监听了click事件
        // 那么如果上面一个元素触发touchstart事件之后消失了, 那么就会出现点透问题
        this.style.display = "none";
    });

    oClick.addEventListener("click", function () {
        console.log("点透了");
    });

</script>
</body>
</html>
  • 点透现象的存在,造成了实际开发中,弹窗等内容消失后,下面的内容如果有点击事件,将会被意外触发,影响体验

fastclick的使用

https://github.com/ftlabs/fastclick

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>touch事件的点透问题解决</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        div{
            font-size: 40px;
            text-align: center;
        }
        .click{
            position: absolute;
            left: 50%;
            transform: translateX(-50%);
            top: 100px;
            width: 300px;
            height: 300px;
            background: red;
        }
        .tap{
            position: absolute;
            left: 50%;
            transform: translateX(-50%);
            top: 150px;
            width: 200px;
            height: 200px;
            background: green;
        }
    </style>

    <script src="js/fastclick.js"></script>
    <script src="js/zepto.js"></script>
</head>
<body>
<div class="click">click</div>
<div class="tap">touch</div>

<script>
    var oClick = document.querySelector(".click");
    var oTap = document.querySelector(".tap");
    // 2.注册fastclick事件
    // 所有元素都会被注册fastclick事件
    FastClick.attach(document.body);

    // 3.使用fastclick
    // 注意点: 这里的click并不是系统的click, 而是fastclick事件
    oTap.addEventListener("click", function () {
        oTap.style.display = "none";
    });

    oClick.addEventListener("click", function () {
        console.log("点透了");
    });

</script>
</body>
</html>

相关文章

  • 移动端touch相关事件

    touchstart : 当手指触摸到指定元素时触发 touchmove: 当手指在指定元素上移动时触发 to...

  • ui-image-editor 图片编辑器 移动端 字体设置

    图片编辑器 移动端 字体设置 大小滑块拖动问题 找到对应插件代码新增 绑定移动端事件(touch) 以及相关 事件...

  • 移动端js事件以及相关库

    移动端js事件 移动端的操作方式和PC端是不同的,移动端主要用手指操作,所以有特殊的touch事件,touch事件...

  • 移动端js事件09-21

    移动端js事件 移动端的操作方式和PC端是不同的,移动端主要用手指操作,所以有特殊的touch事件,touch事件...

  • 前端知识移动端js事件 zeptojs swiper boots

    移动端js事件 移动端的操作方式和PC端是不同的,移动端主要用手指操作,所以有特殊的touch事件,touch事件...

  • 移动端库和框架1

    移动端js事件 移动端的操作方式和PC端是不同的,移动端主要用手指操作,所以有特殊的touch事件,touch事件...

  • 移动端JS事件,zeptojs,swiper,bootstrap

    移动端js事件 移动端的操作方式和PC端是不同的,移动端主要用手指操作,所以有特殊的touch事件,touch事件...

  • bootstrap

    移动端js事件 移动端的操作方式和PC端是不同的,移动端主要用手指操作,所以有特殊的touch事件,touch事件...

  • 移动端js事件以及相关库

    移动端js事件 移动端的操作方式和PC端是不同的,移动端主要用手指操作,所以有特殊的touch事件,touch事件...

  • 移动端库(zepto、swiper)和框架(bootstrap)

    移动端js事件 移动端的操作方式和PC端是不同的,移动端主要用手指操作,所以有特殊的touch事件,touch事件...

网友评论

      本文标题:移动端touch相关事件

      本文链接:https://www.haomeiwen.com/subject/totaqqtx.html