仿QQ实现左滑效果(移动端)

<!DOCTYPE html >
< html lang= "en" >

< head >
< meta charset= "UTF-8" >
< meta name= "viewport" content= "width=device-width, initial-scale=1.0" >
< meta http-equiv= "X-UA-Compatible" content= "ie=edge" >
< title >Document </ title >
< script src= "./jquery-1.12.2.js" > < / script >
</ head >
< style >
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}

#box {
width: 100%;
height: 50px;
border: 1px solid #f00;
overflow: hidden;
}

#box1 {
height: 50px;
border: 1px solid #f00;
}

#left {
height: 50px;
float: left;
background: #f00;
border: 1px solid #000;
}

#right {
width: 80px;
height: 50px;
float: left;
background: #0094ff;
}

< / style >

< body >
< div id= "box" >
< div id= "box1" >
< div id= "left" >点击左滑 </ div >
< div id= "right" >
< span >删除 </ span >
< span >编辑 </ span >
</ div >
</ div >
</ div >
</ body >
< script >
$( function () {
// 获取元素
var box = document. getElementById( "box");
var box1 = document. getElementById( "box1");
var left = document. getElementById( "left");
var right = document. getElementById( "right");
// 让box1盒子的宽度等于box盒子的宽度奖赏right盒子的宽度
$( box1). width( $( box). width() + $( right). width());
// 让left盒子的宽度和box盒子一样
$( left). width( $( box). width());
// 设置初始值
var startx;
var distance = 0;
var leftlimit = 50;
var rightlimit = -( left. offsetLeft - left. parentNode. offsetLeft);
// 获取初始位置
left. addEventListener( "touchstart", function ( e) {
if ( e. targetTouches. length > 1) {
return;
}
startx = e. targetTouches[ 0]. clientX;
});
// 获取移动位置,然后根据移动的距离判断left盒子移动的距离
left. addEventListener( "touchmove", function ( e) {
if ( e. targetTouches. length > 1) {
return;
}
movex = e. targetTouches[ 0]. clientX;
movx = movex - startx + distance;
if ( movx > leftlimit) {
movx = leftlimit;
$( left). animate({
marginLeft: "0"
}, 50);
} else if ( movx < rightlimit - leftlimit) {
movx = rightlimit - leftlimit;
$( left). animate({
marginLeft: "-80px"
}, 200)
}

})
// 获取结束位置,然后根据移动的距离distance判断left盒子移动的距离
left. addEventListener( "touchend", function ( e) {
if ( e. changedTouches. length > 1) {
return;
}
endx = e. changedTouches[ 0]. clientX;
diatance = endx - startx + distance;
if ( distance > 0) {
distance = 0;
left. style. transform = "translateX(" + distance + "px)";
} else if ( distance < rightlimit) {
left. style. transform = "translateX(" + distance + "px)";
}
})
})
< / script >

</ html >

<!-- 参考来源https://blog.csdn.net/smile_watermelon/article/details/46380921 -->

猜你喜欢

转载自blog.csdn.net/weixin_41905935/article/details/81000207