仿QQ左滑出现删除,只能有一条记录显示有左滑js实现

</pre><pre name="code" class="html">    这几天做一个app涉及到仿QQ的左滑,通过查资料,看博文,终于站在巨人的肩膀上用js实现了。该文实现了只能有一条记录的左滑,简单实用,在这里与大家共享,代码还有很多不足和要改进的地方,望各位提出来,我们不断改进,一起进步!
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>左划出现删除按钮,右滑隐藏</title>
        <script type="text/javascript" src="jquery-1.8.3.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function(e) {
                // 设定每一行的宽度=屏幕宽度+按钮宽度
                $(".line-scroll-wrapper").width($(".line-wrapper").width() + $(".line-btn-delete").width());

                // 设定常规信息区域宽度=屏幕宽度
                $(".line-normal-wrapper").width($(".line-wrapper").width());

                // 获取所有行,对每一行设置监听
                var lines = $(".line-scroll-wrapper");
                var len = lines.length;
                var lastX,lastXForMobile;

                // 用于记录被按下的对象
                var pressedObj;
                //定义一个用于存储滑动过的对象的数组
                var pressedObj1=[];

                // 用于记录按下的点
                var start;

                // 网页在移动端运行时的监听
                for (var i = 0; i < len; ++i) {
                    lines[i].addEventListener('touchstart', function(e) {
                        lastXForMobile = e.changedTouches[0].pageX;
                        //记录手指触摸点的横坐标
                        pressedObj = this;
                        // 记录被按下的对象

                        // 记录开始按下时的点
                        var touches = event.touches[0];
                        start = {
                            x : touches.pageX, // 横坐标
                            y : touches.pageY // 纵坐标
                        };
                    });

                    lines[i].addEventListener('touchmove', function(e) {
                        // 计算划动过程中x和y的变化量
                        var touches = event.touches[0];
                        delta = {
                            x : touches.pageX - start.x,
                            y : touches.pageY - start.y
                        };

                        // 横向位移大于纵向位移,阻止纵向滚动
                        if (Math.abs(delta.x) > Math.abs(delta.y)) {
                            event.preventDefault();
                        }
                    });

                    lines[i].addEventListener('touchend', function(e) {
                        var diffX = e.changedTouches[0].pageX - lastXForMobile;
                        if (diffX < -100) {
                            for(var i = 0; i < pressedObj1.length; ++i){
                                $(pressedObj1[i]).animate({marginLeft:"0"}, 500);
                                //清空数组
                                if(i==(pressedObj1.length-1)){
                                    pressedObj1=[];
                                }
                            }
                            $(pressedObj).animate({marginLeft : "-132px"}, 500);// 左滑
                            pressedObj1.push(this); 
                            //记录被滑的这个对象,已被下一次滑动删除这个对象的左移效果
                        } else if (diffX > 100) {
                            $(pressedObj).animate({marginLeft : "0"}, 500);// 右滑
                        }
                    });
                }

                // 网页在PC浏览器中运行时的监听
                for (var i = 0; i < len; ++i) {
                    $(lines[i]).bind('mousedown', function(e) {
                        lastX = e.clientX;
                        pressedObj = this;
                        // 记录被按下的对象
                    });

                    $(lines[i]).bind('mouseup', function(e) {
                        var diffX = e.clientX - lastX;
                        if (diffX < -150) {
                            for (var i = 0; i < len; ++i) {
                                var pressedObj111 = lines[i];
                                $(pressedObj111).animate({
                                    marginLeft : "0"
                                }, 100);
                                if(i==(pressedObj1.length-1)){
                                    pressedObj1=[];
                                }
                            }
                            $(pressedObj).animate({
                                marginLeft : "-101px"
                            }, 500);
                            // 左滑
                        } else if (diffX > 150) {
                            $(pressedObj).animate({
                                marginLeft : "0"
                            }, 500);
                            // 右滑
                        }
                    });
                }
            });
        </script>
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
            }
            .line-wrapper {
                width: 100%;
                overflow: hidden;
                font-size: 1.3em;
                border-bottom: 1px solid #aaa;
                padding-top: 0.3em;
                padding-bottom: 0.3em;
            }
            .line-scroll-wrapper {
                white-space: nowrap;
            }
            .line-btn-delete {
                float: left;
                width: 2em;
                font-size: 0.8em;
                padding-top: 0.3em;
                padding-bottom: 0.3em;
            }
            .line-normal-wrapper {
                display: inline-block;
                float: left;
            }

        </style>
    </head>
    <body>
        
        <div class="line-wrapper">
            <div class="line-scroll-wrapper">
                <div class="line-normal-wrapper">
                    
                                                                    轻松的方式符合us
                    
                </div>
                <div class="line-btn-delete">
                                                            删除123
                </div>
            </div>
        </div>
        <div class="line-wrapper">
            <div class="line-scroll-wrapper">
                <div class="line-normal-wrapper">
                    
                        轻松的方式符合us
                    
                </div>
                <div class="line-btn-delete">
                    删除
                </div>
            </div>
        </div>
        <div class="line-wrapper">
            <div class="line-scroll-wrapper">
                <div class="line-normal-wrapper">
                    
                        轻松的方式符合us个我
                    
                </div>
                <div class="line-btn-delete">
                    删除
                </div>
            </div>
        </div>
        <div class="line-wrapper">
            <div class="line-scroll-wrapper">
                <div class="line-normal-wrapper">
                    
                                                        轻松的方式符合u
                   
                </div>
                <div class="line-btn-delete">
                    删除
                </div>
            </div>
        </div>

        <div class="line-wrapper">
            <div class="line-scroll-wrapper">
                <div class="line-normal-wrapper">
                    
                        轻松的方式
                    
                </div>
                <div class="line-btn-delete">
                    删除
                </div>
            </div>
        </div>
        <div class="line-wrapper">
            <div class="line-scroll-wrapper">
                <div class="line-normal-wrapper">
                  
                        轻松的方式
                    
                </div>
                <div class="line-btn-delete">
                    删除
                </div>
            </div>
        </div>
        <div class="line-wrapper">
            <div class="line-scroll-wrapper">
                <div class="line-normal-wrapper">
                   
                        轻松的方式符
                   
                </div>
                <div class="line-btn-delete">
                    删除
                </div>
            </div>
        </div>
        <div class="line-wrapper">
            <div class="line-scroll-wrapper">
                <div class="line-normal-wrapper">
                   
                        轻松的方式符合
                   
                </div>
                <div class="line-btn-delete">
                    删除
                </div>
            </div>
        </div>
    </body>
</html>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值