*{padding:0;margin:0;}
body{background:#EEEEEE;}
.box{text-align: center;}
.btn{
position: relative;
width:70%;
height:40px;
margin:150pxauto;
border-radius:20px;
background:#333333;
}
.btn-move{
position: absolute;
left:0;
top:0;
width:40px;
height:40px;
border-radius:20px;
background:#ededed;
}
.tt{
font-size:20px;
color:#008000;
text-align: center;
margin-top:50px;
}
@touchstart='touchStart'
@touchmove='touchMove'
@touchend='touchEnd'
:style="slideEffect"
>
你滑动成功了!
Vue.component('slide-release',{
template:'#slide',
data:function(){
return{
isShow:false,
startX:0,//开始触摸的位置
moveX:0,//滑动时的位置
endX:0,//结束触摸的位置
disX:0,//移动距离
slideEffect:'',//滑动时的效果,使用v-bind:style="deleteSlider"
}
},
methods:{
touchStart:function(ev){
ev = ev || event;
ev.preventDefault();
// console.log(ev.targetTouches);
// console.log(ev.changedTouches);
if(ev.touches.length ==1) {//tounches类数组,等于1时表示此时有只有一只手指在触摸屏幕
this.startX = ev.touches[0].clientX;// 记录开始位置
}
},
touchMove:function(ev){
ev = ev || event;
ev.preventDefault();
letbtnWidth =this.$refs.remove.offsetWidth;//$refs 减少获取dom节点的消耗
letbtnImg =this.$refs.btnImg.offsetWidth;
console.log(ev.targetTouches);
console.log(ev.changedTouches);
if(ev.touches.length ==1) {
//滑动时距离浏览器左侧的距离
this.moveX = ev.touches[0].clientX;
//实时的滑动的距离-起始位置=实时移动的位置
this.disX =this.moveX-this.startX;
if(this.disX<0||this.disX ==0) {
this.slideEffect ='transform:translateX(0px)';
}elseif(this.disX>0){
this.slideEffect ='transform:translateX('+this.disX+'px)';
// 最大也只能等于删除按钮宽度
if(this.disX>=btnWidth) {
this.slideEffect ='transform:translateX('+(btnWidth-btnImg)+'px)';
}
}
}
},
touchEnd:function(ev){
ev = ev || event;
ev.preventDefault();
letbtnWidth =this.$refs.remove.offsetWidth;
letbtnImg =this.$refs.btnImg.offsetWidth;
// console.log(ev.changedTouches);
if(ev.changedTouches.length ==1) {
letendX = ev.changedTouches[0].clientX;
this.disX = endX-this.startX;
console.log(this.disX,'this.disX')
console.log((btnWidth/2),'btnWidth/2');
if(this.disX < (btnWidth/2)) {
this.slideEffect ='transform:translateX(0px)';
}else{
this.slideEffect ="transform:translateX("+(btnWidth-btnImg)+"px)";
//让字段显示出来,或者写你需要的逻辑
this.isShow =true
}
}
}
}
})
varvm =newVue({
el:'#box',
})
vue 移动端左右滑动
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 源站:http://fengyuanchen.github.io/viewer/ 应用: html: 源码上是正常...