开发者社区> 问答> 正文

在滑动第二个目标的时候上个目标为什么没有回位?谢谢

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>滑动删除</title>

<script language="javascript">

window.addEventListener('load', function() {

var initX; //触摸位置
var moveX; //滑动时的位置
var X = 0; //移动距离
var objX = 0; //目标对象位置
window.addEventListener('touchstart', function(event) {
  event.preventDefault();
  var obj = event.target.parentNode;
  if (obj.className == "list-li") {
    initX = event.targetTouches[0].pageX;
    objX = (obj.style.WebkitTransform.replace(/translateX\(/g, "").replace(/px\)/g, "")) * 1;
  }
  if (objX == 0) {
    window.addEventListener('touchmove', function(event) {
      event.preventDefault();
      var obj = event.target.parentNode;
      if (obj.className == "list-li") {
        moveX = event.targetTouches[0].pageX;
        X = moveX - initX;
        if (X >= 0) {
          obj.style.WebkitTransform = "translateX(" + 0 + "px)";
        } else if (X < 0) {
          var l = Math.abs(X);
          obj.style.WebkitTransform = "translateX(" + -l + "px)";
          if (l > 80) {
            l = 80;
            obj.style.WebkitTransform = "translateX(" + -l + "px)";
          }
        }
      }
    });
  } else if (objX < 0) {
    window.addEventListener('touchmove', function(event) {
      event.preventDefault();
      var obj = event.target.parentNode;
      if (obj.className == "list-li") {
        moveX = event.targetTouches[0].pageX;
        X = moveX - initX;
        if (X >= 0) {
          var r = -80 + Math.abs(X);
          obj.style.WebkitTransform = "translateX(" + r + "px)";
          if (r > 0) {
            r = 0;
            obj.style.WebkitTransform = "translateX(" + r + "px)";
          }
        } else { //向左滑动
          obj.style.WebkitTransform = "translateX(" + -80 + "px)";
        }
      }
    });
  }

})
window.addEventListener('touchend', function(event) {
  event.preventDefault();
  var obj = event.target.parentNode;
  if (obj.className == "list-li") {
    objX = (obj.style.WebkitTransform.replace(/translateX\(/g, "").replace(/px\)/g, "")) * 1;
    if (objX > -40) {
      obj.style.WebkitTransform = "translateX(" + 0 + "px)";
      objX = 0;
    } else {
      obj.style.WebkitTransform = "translateX(" + -80 + "px)";
      objX = -80;
    }
  }
})

})
</script>
</head>

<style>
•{

padding: 0;
margin: 0;
list-style: none;

}


header {

background: #f7483b;
border-bottom: 1px solid #ccc

}

header h2 {

text-align: center;
line-height: 54px;
font-size: 16px;
color: #fff

}

.list-ul {

overflow: hidden

}

.list-li {

line-height: 60px;
border-bottom: 1px solid #fcfcfc;
position: relative;
padding: 0 12px;
color: #666;
background: #f2f2f2;
-webkit-transform: translateX(0px);

}

.btn {

position: absolute;
top: 0;
right: -80px;
text-align: center;
background: #ffcb20;
color: #fff;
width: 80px

}
</style>

screenshot

展开
收起
杨冬芳 2016-06-13 09:38:43 1737 0
1 条回答
写回答
取消 提交回答
  • 这题目不完整啊。。。

    2019-07-17 19:35:05
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
重新定义计算的边界 立即下载
用计算和数据去改变整个世界 立即下载
低代码开发师(初级)实战教程 立即下载