1. 程式人生 > >左劃出現刪除按鈕,右滑隱藏

左劃出現刪除按鈕,右滑隱藏

<!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>

在這裡插入圖片描述