Skip to content

Instantly share code, notes, and snippets.

@3014zhangshuo
Last active August 8, 2020 07:14
Show Gist options
  • Save 3014zhangshuo/09f3932ecb289ad7ffbdb2a3f2e1ed6e to your computer and use it in GitHub Desktop.
Save 3014zhangshuo/09f3932ecb289ad7ffbdb2a3f2e1ed6e to your computer and use it in GitHub Desktop.
模仿APP左滑出删除按钮
.list {
overflow: hidden;
}
[data-swipe="left"] {
width: 120%;
overflow: hidden;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
transition: all 0.5s ease;
}
.swipeleft{
transform:translateX(-15%);
-webkit-transform:translateX(-15%);
}
.delete-btn {
width: 15%;
float: right;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>左滑显示删除按钮</title>
<style>
body { font-size:.14rem; }
li { list-style:none; }
i { font-style:normal; }
a { color:#393939; text-decoration:none; }
.list{
overflow:hidden;
margin-top:.2rem;
padding-left:.3rem;
border-top:1px solid #ddd;
}
.list li {
overflow: hidden;
width: 120%;
border-bottom: 1px solid #ddd;
}
.list li a {
display: block;
height: .88rem;
line-height: .88rem;
-webkit-transition: all 0.3s linear;
transition: all 0.3s linear;
}
.list li i {
float:right;
width:15%;
text-align:center;
background:#E2421B;
color:#fff;
}
.swipeleft{
transform:translateX(-15%);
-webkit-transform:translateX(-15%);
}
</style>
</head>
<body>
<div class="list">
    <ul>
       <li data-swipe="left"><a href="#">左滑显示删除按钮1<i>删除</i></a></li>
       <li data-swipe="left"><a href="#">左滑显示删除按钮2<i>删除</i></a></li>
       <li data-swipe="left"><a href="#">左滑显示删除按钮3<i>删除</i></a></li>
    </ul>
</div>
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha256-pasqAKBDmFT4eHoN2ndd6lN370kFiGUFyTiUHWhU7k8=" crossorigin="anonymous"></script>
<script>
var swipeLeftItem = null
var startX, startY, endX, endY
$(document).on("touchstart", "[data-swipe='left']", function (event) {
startX = event.changedTouches[0].pageX
startY = event.changedTouches[0].pageY
// closed current swipeLeftItem when item touchstart
if (swipeLeftItem) {
$(swipeLeftItem).removeClass("swipeleft")
}
})
$(document).on("touchmove", "[data-swipe='left']", function(event) {
endX = event.changedTouches[0].pageX
endY = event.changedTouches[0].pageY
var swipeLeft = startX - endX > 10 // trigger when swiping distance is 10
var swipingLeftAndRight = Math.abs(endX - startX) - Math.abs(endY - startY) > 0
if (swipingLeftAndRight) {
event.stopPropagation()
event.preventDefault()
if (swipeLeft) {
swipeLeftItem = this
$(this).addClass("swipeleft")
} else {
$(this).removeClass("swipeleft")
}
}
})
</script>
</body>
</html>
var swipeLeftItem = null
var startX, startY, endX, endY
$(document).on("touchstart", "[data-swipe='left']", function (event) {
startX = event.changedTouches[0].pageX
startY = event.changedTouches[0].pageY
// closed current swipeLeftItem when item touchstart
if (swipeLeftItem) {
$(swipeLeftItem).removeClass("swipeleft")
}
})
$(document).on("touchmove", "[data-swipe='left']", function(event) {
endX = event.changedTouches[0].pageX
endY = event.changedTouches[0].pageY
var swipeLeft = startX - endX > 10 // trigger when swiping distance is 10
var swipingLeftAndRight = Math.abs(endX - startX) - Math.abs(endY - startY) > 0
if (swipingLeftAndRight) {
event.stopPropagation()
event.preventDefault()
if (swipeLeft) {
swipeLeftItem = this
$(this).addClass("swipeleft")
} else {
$(this).removeClass("swipeleft")
}
}
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment