vue移動(dòng)端的左右滑動(dòng)事件詳解
本文實(shí)例為大家分享了vue移動(dòng)端左右滑動(dòng)事件,供大家參考,具體內(nèi)容如下
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="https://unpkg.com/vue"></script>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<meta content="telephone=no" name="format-detection">
<style>
*{padding: 0;margin: 0;}
body {background: #EEEEEE;}
.box {text-align: center;}
.btn {
position: relative;
width: 70%;
height: 40px;
margin: 150px auto;
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;
}
</style>
</head>
<body>
<div id="box">
<slide-release></slide-release>
</div>
<script type="text/x-template" id="slide">
<div>
<div class="btn" ref='remove'>
<span ref='btnImg' class="btn-move"
@touchstart='touchStart'
@touchmove='touchMove'
@touchend='touchEnd'
:style="slideEffect"
>
</span>
</div>
<p class="tt" v-show="isShow">你滑動(dòng)成功了!</p>
</div>
</script>
<script>
Vue.component('slide-release',{
template:'#slide',
data:function(){
return {
isShow:false,
startX:0,//開(kāi)始觸摸的位置
moveX:0,//滑動(dòng)時(shí)的位置
endX:0,//結(jié)束觸摸的位置
disX:0,//移動(dòng)距離
slideEffect:'',//滑動(dòng)時(shí)的效果,使用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類(lèi)數(shù)組,等于1時(shí)表示此時(shí)有只有一只手指在觸摸屏幕
this.startX = ev.touches[0].clientX; // 記錄開(kāi)始位置
}
},
touchMove:function(ev) {
ev = ev || event;
ev.preventDefault();
let btnWidth = this.$refs.remove.offsetWidth; //$refs 減少獲取dom節(jié)點(diǎn)的消耗
let btnImg = this.$refs.btnImg.offsetWidth;
console.log(ev.targetTouches);
console.log(ev.changedTouches);
if(ev.touches.length == 1) {
//滑動(dòng)時(shí)距離瀏覽器左側(cè)的距離
this.moveX = ev.touches[0].clientX;
//實(shí)時(shí)的滑動(dòng)的距離-起始位置=實(shí)時(shí)移動(dòng)的位置
this.disX = this.moveX-this.startX;
if(this.disX<0 || this.disX == 0) {
this.slideEffect = 'transform:translateX(0px)';
}else if(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();
let btnWidth = this.$refs.remove.offsetWidth;
let btnImg = this.$refs.btnImg.offsetWidth;
// console.log(ev.changedTouches);
if(ev.changedTouches.length == 1) {
let endX = 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)";
//讓字段顯示出來(lái),或者寫(xiě)你需要的邏輯
this.isShow = true
}
}
}
}
})
var vm = new Vue({
el:'#box',
})
</script>
</body>
</html>
關(guān)于vue.js組件的教程,請(qǐng)大家點(diǎn)擊專(zhuān)題vue.js組件學(xué)習(xí)教程進(jìn)行學(xué)習(xí)。
更多vue學(xué)習(xí)教程請(qǐng)閱讀專(zhuān)題《vue實(shí)戰(zhàn)教程》
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Vue實(shí)現(xiàn)移動(dòng)端左右滑動(dòng)效果的方法
- vue移動(dòng)端實(shí)現(xiàn)手機(jī)左右滑動(dòng)入場(chǎng)動(dòng)畫(huà)
- Swiper.js實(shí)現(xiàn)移動(dòng)端元素左右滑動(dòng)
- 移動(dòng)端手指操控左右滑動(dòng)的菜單
- jquery實(shí)現(xiàn)移動(dòng)端按鈕組左右滑動(dòng)
- vue中transition動(dòng)畫(huà)使用(移動(dòng)端頁(yè)面切換左右滑動(dòng)效果)
- 移動(dòng)端左右滑動(dòng)切換頁(yè)面效果完整代碼(純JavaScript)
相關(guān)文章
Vue初始化中的選項(xiàng)合并之initInternalComponent詳解
這篇文章主要介紹了Vue初始化中的選項(xiàng)合并之initInternalComponent的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
vue loadmore 組件滑動(dòng)加載更多源碼解析
這篇文章主要介紹了vue loadmore 組件滑動(dòng)加載更多源碼解析,需要的朋友可以參考下2017-07-07
cordova+vue+webapp使用html5獲取地理位置的方法
這篇文章主要介紹了2019-07-07
詳解@Vue/Cli 3 Invalid Host header 錯(cuò)誤解決辦法
這篇文章主要介紹了詳解@Vue/Cli 3 Invalid Host header 錯(cuò)誤解決辦法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Vue實(shí)現(xiàn)導(dǎo)航吸頂效果的教程詳解
在瀏覽器上下滾動(dòng)的時(shí)候,如何距離頂部的距離大于78px,吸頂顯示,小于78px則隱藏,所以本文小編給大家介紹了Vue設(shè)置導(dǎo)航吸頂?shù)脑敿?xì)教程,文中有相關(guān)的代碼示例供大家參考,具有一定的參考價(jià)值,需要的朋友可以參考下2024-01-01
詳解Vue demo實(shí)現(xiàn)商品列表的展示
這篇文章主要介紹了Vue demo實(shí)現(xiàn)商品列表的展示,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
Vue+SpringBoot開(kāi)發(fā)V部落博客管理平臺(tái)
V部落是一個(gè)多用戶(hù)博客管理平臺(tái)。這篇文章主要介紹了Vue+SpringBoot開(kāi)發(fā)V部落博客管理平臺(tái),需要的朋友可以參考下2017-12-12
Vue項(xiàng)目中安裝使用axios全過(guò)程
這篇文章主要介紹了Vue項(xiàng)目中安裝使用axios全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
前端Vue學(xué)習(xí)之購(gòu)物車(chē)項(xiàng)目實(shí)戰(zhàn)記錄
購(gòu)物車(chē)是電商必備的功能,可以讓用戶(hù)一次性購(gòu)買(mǎi)多個(gè)商品,下面這篇文章主要給大家介紹了關(guān)于前端Vue學(xué)習(xí)之購(gòu)物車(chē)項(xiàng)目的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07

