• 前端 html h5 移动端 手机端 仿ios左滑删除效果


    实现功能:左滑列表项(<li class="route-item" ></li>),出现删除按钮(<div class="removeJs">删除</div>)。

    js部分的代码如下:

     1 window.addEventListener('load',function(){
     2     var initX;
     3     var moveX;
     4     var X = 0;
     5     var objX = 0;
     6     var width=$(".removeJs").width();//按钮的宽度(removeJs修改为按钮的className)
     7     var liClassName=".route-item";//li的className(route-item修改为li的className)
     8     $("body").on("touchstart",liClassName,function (event) {
     9         var obj=this;
    10             initX = event.targetTouches[0].pageX;
    11             objX =(obj.style.WebkitTransform.replace(/translateX(/g,"").replace(/px)/g,""))*1;
    12         if( objX == 0){
    13             $("body").on('touchmove',liClassName,function(event) {
    14                 // event.preventDefault();
    15                 var obj=this;
    16                     moveX = event.targetTouches[0].pageX;
    17                     X = moveX - initX;
    18                     if (X > 0) {
    19                         obj.style.WebkitTransform = "translateX(" + 0 + "px)";
    20                     }
    21                     else if (X < 0) {
    22                         var l = Math.abs(X);
    23                         obj.style.WebkitTransform = "translateX(" + -l + "px)";
    24                         if(l>width){
    25                             l=width;
    26                             obj.style.WebkitTransform = "translateX(" + -l + "px)";
    27                         }
    28                     }
    29             });
    30         }
    31         else if(objX<0){
    32             $("body").on("touchmove",liClassName,function (event) {
    33                 // event.preventDefault();
    34                 var obj=this;
    35                     moveX = event.targetTouches[0].pageX;
    36                     X = moveX - initX;
    37                     if (X > 0) {
    38                         var r = -width + Math.abs(X);
    39                         obj.style.WebkitTransform = "translateX(" + r + "px)";
    40                         if(r>0){
    41                             r=0;
    42                             obj.style.WebkitTransform = "translateX(" + r + "px)";
    43                         }
    44                     }
    45                     else {     //向左滑动
    46                         obj.style.WebkitTransform = "translateX(" + -width + "px)";
    47                     }
    48             });
    49         }
    50     })
    51     $("body").on("touchend",liClassName,function (event) {
    52         var obj=this;
    53             objX =(obj.style.WebkitTransform.replace(/translateX(/g,"").replace(/px)/g,""))*1;
    54             if(objX>-width/2){
    55                 obj.style.WebkitTransform = "translateX(" + 0 + "px)";
    56             }else{
    57                 obj.style.WebkitTransform = "translateX(" + -width + "px)";
    58             }
    59     })
    60 })
    View Code

    ps:实际项目中,只需修改如下两行代码即可:

    var width=$(".removeJs").width();
    var liClassName=".route-item";

     注意touchmove事件:当手指在屏幕上滑动的时候连续地触发。在这个事件发生期间,调用preventDefault()事件可以阻止滚动,如果设置了e.preventDefault(),那么列表将无法上下滚动

    ps:

    touchstart事件:当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发。

      touchmove事件:当手指在屏幕上滑动的时候连续地触发。在这个事件发生期间,调用preventDefault()事件可以阻止滚动。

      touchend事件:当手指从屏幕上离开的时候触发。

      touchcancel事件:当系统停止跟踪触摸的时候触发。关于这个事件的确切出发时间,文档中并没有具体说明,咱们只能去猜测了。

  • 相关阅读:
    userAgent判断当前设备类型
    h5+css3最简单的图片飞入以及淡入淡出效果
    ruby的form中常用的控件
    初识swipe.js
    后缀为7z的文件解码
    python all()函数
    flask web表单
    flask过滤器
    flask学习笔记1.21
    py学习笔记1.13、1.14
  • 原文地址:https://www.cnblogs.com/ishuanghe/p/7989858.html
Copyright © 2020-2023  润新知