js左划出现删除按钮,右滑隐藏demo效果示例(整理)

简介: js左划出现删除按钮,右滑隐藏demo效果示例(整理)
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>左划出现删除按钮,右滑隐藏</title>
    <script src="http://libs.baidu.com/jquery/1.11.3/jquery.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());
        // 设定文字部分宽度(为了实现文字过长时在末尾显示...)
        $(".line-normal-msg").width($(".line-normal-wrapper").width() - 280);
        // 获取所有行,对每一行设置监听
        var lines = $(".line-normal-wrapper");
        var len = lines.length;
        var lastX, lastXForMobile;
        // 用于记录被按下的对象
        var pressedObj; // 当前左滑的对象
        var lastLeftObj; // 上一个左滑的对象
        // 用于记录按下的点
        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) {
            if (lastLeftObj && pressedObj != lastLeftObj) { // 点击除当前左滑对象之外的任意其他位置
              $(lastLeftObj).animate({
                marginLeft: "0"
              }, 500); // 右滑
              lastLeftObj = null; // 清空上一个左滑的对象
            }
            var diffX = e.changedTouches[0].pageX - lastXForMobile;
            if (diffX < -150) {
              $(pressedObj).animate({
                marginLeft: "-132px"
              }, 500); // 左滑
              lastLeftObj && lastLeftObj != pressedObj &&
                $(lastLeftObj).animate({
                  marginLeft: "0"
                }, 500); // 已经左滑状态的按钮右滑
              lastLeftObj = pressedObj; // 记录上一个左滑的对象
            } else if (diffX > 150) {
              if (pressedObj == lastLeftObj) {
                $(pressedObj).animate({
                  marginLeft: "0"
                }, 500); // 右滑
                lastLeftObj = null; // 清空上一个左滑的对象
              }
            }
          });
        }
        // 网页在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) {
            if (lastLeftObj && pressedObj != lastLeftObj) { // 点击除当前左滑对象之外的任意其他位置
              $(lastLeftObj).animate({
                marginLeft: "0"
              }, 500); // 右滑
              lastLeftObj = null; // 清空上一个左滑的对象
            }
            var diffX = e.clientX - lastX;
            if (diffX < -150) {
              $(pressedObj).animate({
                marginLeft: "-132px"
              }, 500); // 左滑
              lastLeftObj && lastLeftObj != pressedObj &&
                $(lastLeftObj).animate({
                  marginLeft: "0"
                }, 500); // 已经左滑状态的按钮右滑
              lastLeftObj = pressedObj; // 记录上一个左滑的对象
            } else if (diffX > 150) {
              if (pressedObj == lastLeftObj) {
                $(pressedObj).animate({
                  marginLeft: "0"
                }, 500); // 右滑
                lastLeftObj = null; // 清空上一个左滑的对象
              }
            }
          });
        }
      });
    </script>
    <script>
      window.onload = function() {
        $(".line-btn-delete button").click(function() {
          $(this).parent().parent().parent().remove();
        });
      };
    </script>
    <style type="text/css">
      * {
        margin: 0;
        padding: 0;
      }
      .line-wrapper {
        width: 100%;
        height: 144px;
        overflow: hidden;
        font-size: 28px;
        border-bottom: 1px solid #aaa;
      }
      .line-scroll-wrapper {
        white-space: nowrap;
        height: 144px;
        clear: both;
      }
      .line-btn-delete {
        float: left;
        width: 132px;
        height: 144px;
      }
      .line-btn-delete button {
        width: 100%;
        height: 100%;
        background: #00bc12;
        border: none;
        font-size: 24px;
        color: #fff;
      }
      .line-normal-wrapper {
        display: inline-block;
        line-height: 100px;
        float: left;
        padding-top: 10px;
        padding-bottom: 10px;
      }
      .line-normal-icon-wrapper {
        float: right;
        width: 120px;
        height: 120px;
        margin-right: 12px;
      }
      .line-normal-icon-wrapper img {
        width: 120px;
      }
      .line-normal-avatar-wrapper {
        width: 100px;
        height: 124px;
        float: left;
        margin-left: 12px;
      }
      .line-normal-avatar-wrapper img {
        width: 92px;
        height: 92px;
      }
      .line-normal-left-wrapper {
        float: left;
        overflow: hidden;
      }
      .line-normal-info-wrapper {
        float: left;
        margin-left: 10px;
      }
      .line-normal-user-name {
        height: 28px;
        line-height: 28px;
        color: #4e4e4e;
        margin-top: 7px;
      }
      .line-normal-msg {
        height: 28px;
        line-height: 28px;
        overflow: hidden;
        text-overflow: ellipsis;
        color: #4e4e4e;
        margin-top: 11px;
      }
      .line-normal-time {
        height: 28px;
        line-height: 28px;
        color: #999;
        margin-top: 11px;
      }
    </style>
  </head>
  <body>
    <div class="line-wrapper">
      <div class="line-scroll-wrapper">
        <div class="line-normal-wrapper">
          <div class="line-normal-left-wrapper">
            <div class="line-normal-avatar-wrapper">
              <img
                src="https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2822468059,2673919372&fm=27&gp=0.jpg" />
            </div>
            <div class="line-normal-info-wrapper">
              <div class="line-normal-user-name">
                笨蛋哆啦A梦快点
              </div>
              <div class="line-normal-msg">
                在不快点我就不等你了哦
              </div>
              <div class="line-normal-time">
                1分钟前
              </div>
            </div>
          </div>
          <div class="line-normal-icon-wrapper">
            <img
              src="https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3746300160,635742787&fm=26&gp=0.jpg" />
          </div>
        </div>
        <div class="line-btn-delete">
          <button>删除</button>
        </div>
      </div>
    </div>
    <div class="line-wrapper">
      <div class="line-scroll-wrapper">
        <div class="line-normal-wrapper">
          <div class="line-normal-left-wrapper">
            <div class="line-normal-avatar-wrapper">
              <img
                src="https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2822468059,2673919372&fm=27&gp=0.jpg" />
            </div>
            <div class="line-normal-info-wrapper">
              <div class="line-normal-user-name">
                笨蛋哆啦A梦快点
              </div>
              <div class="line-normal-msg">
                在不快点我就不等你了哦
              </div>
              <div class="line-normal-time">
                1分钟前
              </div>
            </div>
          </div>
          <div class="line-normal-icon-wrapper">
            <img
              src="https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3746300160,635742787&fm=26&gp=0.jpg" />
          </div>
        </div>
        <div class="line-btn-delete">
          <button>删除</button>
        </div>
      </div>
    </div>
    <div class="line-wrapper">
      <div class="line-scroll-wrapper">
        <div class="line-normal-wrapper">
          <div class="line-normal-left-wrapper">
            <div class="line-normal-avatar-wrapper">
              <img
                src="https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2822468059,2673919372&fm=27&gp=0.jpg" />
            </div>
            <div class="line-normal-info-wrapper">
              <div class="line-normal-user-name">
                笨蛋哆啦A梦快点
              </div>
              <div class="line-normal-msg">
                在不快点我就不等你了哦
              </div>
              <div class="line-normal-time">
                1分钟前
              </div>
            </div>
          </div>
          <div class="line-normal-icon-wrapper">
            <img
              src="https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3746300160,635742787&fm=26&gp=0.jpg" />
          </div>
        </div>
        <div class="line-btn-delete">
          <button>删除</button>
        </div>
      </div>
    </div>
    <div class="line-wrapper">
      <div class="line-scroll-wrapper">
        <div class="line-normal-wrapper">
          <div class="line-normal-left-wrapper">
            <div class="line-normal-avatar-wrapper">
              <img
                src="https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2822468059,2673919372&fm=27&gp=0.jpg" />
            </div>
            <div class="line-normal-info-wrapper">
              <div class="line-normal-user-name">
                笨蛋哆啦A梦快点
              </div>
              <div class="line-normal-msg">
                在不快点我就不等你了哦
              </div>
              <div class="line-normal-time">
                1分钟前
              </div>
            </div>
          </div>
          <div class="line-normal-icon-wrapper">
            <img
              src="https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3746300160,635742787&fm=26&gp=0.jpg" />
          </div>
        </div>
        <div class="line-btn-delete">
          <button>删除</button>
        </div>
      </div>
    </div>
  </body>
</html>

相关文章
|
2月前
|
Web App开发 JavaScript 前端开发
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
|
2月前
|
算法 JavaScript 前端开发
第一个算法项目 | JS实现并查集迷宫算法Demo学习
本文是关于使用JavaScript实现并查集迷宫算法的中国象棋demo的学习记录,包括项目运行方法、知识点梳理、代码赏析以及相关CSS样式表文件的介绍。
第一个算法项目 | JS实现并查集迷宫算法Demo学习
|
2月前
|
JavaScript 前端开发
JS配合CSS3实现动画和拖动小星星小Demo
本文通过代码示例展示了如何使用JavaScript和CSS3实现动画效果和拖动小星星的交互效果,包括文字掉落动画和鼠标拖动产生小星星动画的实现方法。
45 0
JS配合CSS3实现动画和拖动小星星小Demo
|
2月前
|
前端开发 JavaScript 开发者
Express.js与前端框架的集成:React、Vue和Angular的示例与技巧
本文介绍了如何将简洁灵活的Node.js后端框架Express.js与三大流行前端框架——React、Vue及Angular进行集成,以提升开发效率与代码可维护性。文中提供了详细的示例代码和实用技巧,展示了如何利用Express.js处理路由和静态文件服务,同时在React、Vue和Angular中构建用户界面,帮助开发者快速掌握前后端分离的开发方法,实现高效、灵活的Web应用构建。
52 3
|
3月前
|
前端开发 JavaScript 开发者
前端JS按钮点击事件、跳出弹窗、遮罩的实战示例
本文提供了一个前端JS按钮点击事件、弹出式窗口和遮罩层的实战示例,包括HTML、CSS和JavaScript的具体实现代码,以及功能解析,演示了如何实现按钮点击后触发弹窗显示和遮罩层,并在2秒后自动关闭或点击遮罩层关闭弹窗的效果。
前端JS按钮点击事件、跳出弹窗、遮罩的实战示例
|
3月前
|
JavaScript 前端开发
【Azure Developer】在App Service上放置一个JS页面并引用msal.min.js成功获取AAD用户名示例
【Azure Developer】在App Service上放置一个JS页面并引用msal.min.js成功获取AAD用户名示例
|
3月前
|
JavaScript 前端开发
使用js生成表格标题、表格内容并且每行附带删除按钮然后插入到页面中
使用js生成表格标题、表格内容并且每行附带删除按钮然后插入到页面中
38 2
|
3月前
|
JavaScript Java
点击按钮,向下添加目录。Java script+jQuery写法
点击按钮,向下添加目录。Java script+jQuery写法
22 1
|
3月前
|
JavaScript Java
分别使用js与jquery写 单击按钮时出现内容 点击删除按钮不会再向下出现
分别使用js与jquery写 单击按钮时出现内容 点击删除按钮不会再向下出现
20 1
|
3月前
|
JavaScript 前端开发
JavaScript——一个简单的队列Demo
JavaScript——一个简单的队列Demo
41 4