H5左侧滑删除简单实现

简单的左滑删除

实现功能

在一个列表的一条中,往左滑动时,右边出现删除按钮,点击可删除这一条

实现办法

列表中一项为父div,其中包含内容div和删除按钮span 父div相对定位,设置宽度.内容div宽度与父div宽度一样.内容和按钮都绝对定位,并且内容zindex在按钮之上 这样,就将按钮遮住了.然后在内容上绑定touchstart和touchmove事件.计算坐标的移动判断出是左还是右. 根据左和右来改变内容的left值.当内容的left值向左移动一段距离,那么删除按钮就露出来了.可将这段距离设为 删除按钮的宽度.当内容向右移动时,再将left值设为0.这样就实现了.


点击绿色查看效果

第一条
删除
 
CSS:
  .moveleft{
            transform:translateX(-50px);/*改变位置时,可以添加或删除这个C3类.效果是水平移动50像素.正负表示方向*/
        }
        .itembox {
            position:relative;/*父DIV相对定位*/
            width: 400px;/*要设置宽度*/
            font-size:16px;
        }
        .itemcont {
            z-index:1;/*内容层在按钮上*/
            position:absolute;/*绝对定位*/
            width: 400px;/*与父DIV宽度一样*/
            height: 34px;
            line-height: 34px;
            background-color:green;
        }

        .itemdelbtn {
            position:absolute;/*绝对定位*/
            right:0;top:0;/*在最右边*/
            display: inline-block;
            width: 50px;
            height: 34px;
            text-align: center;
            line-height: 34px;
            background-color: red;
        }
View Code
js:
 1  function moveleft(thisobj)
 2             {
 3             var p = $(thisobj).position();
 4             if (p.left < 0)
 5                 thisobj.style.left=0+'px';
 6             else
 7                 thisobj.style.left = -50+'px';
 8         }
 9         (function TouchLeft()
10         {
11             var startX, startY, moveEndX, moveEndY, X, Y;
12             $(".itemcont").on("touchstart", function (e)
13             {
14                  //e.preventDefault();
15                 startX = e.originalEvent.changedTouches[0].pageX,
16                 startY = e.originalEvent.changedTouches[0].pageY;
17             });
18             $(".itemcont").on("touchmove", function (e)
19             {
20                  //e.preventDefault();
21                 moveEndX = e.originalEvent.changedTouches[0].pageX,
22                 moveEndY = e.originalEvent.changedTouches[0].pageY,
23                 X = moveEndX - startX,
24                 Y = moveEndY - startY;
25 
26                 if (Math.abs(X) > Math.abs(Y) && X < 0) {  //从右侧向左滑动
27                     $(this).css('left', '-50px');
28                 } else if (Math.abs(X) > Math.abs(Y) && X > 0) { $(this).css('left', '0'); }
29             });
30         })()
View Code

原文地址:https://www.cnblogs.com/mirrortom/p/7384238.html