1、全局引入:
npm insall vue-touch@next --save
2、main.js中引入:
import VueTouch from 'vue-touch'
Vue.use(VueTouch, {name: 'v-touch'})
3、代码中使用
<template>
<div class="hello" id="start">
</div>
</template>
<script>
export default {
name: 'Start',
data () {
return {
startX: 0, // 鼠标开始点击的x坐标
startY: 0, // 鼠标开始点击的Y坐标
}
},
mounted () {
// 给被滑动对象添加事件
let element = document.getElementById('start')
this.addHandler(element, 'touchstart', this.handleTouchEvent)
this.addHandler(element, 'touchend', this.handleTouchEvent)
this.addHandler(element, 'touchmove', this.handleTouchEvent)
},
components: {
Logo
},
methods: {
// 给目标添加事件,处理兼容
addHandler (element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false)
} else if (element.attachEvent) {
element.attachEvent('on' + type, handler)
} else {
element['on' + type] = handler
}
},
// 具体的滑动处理
handleTouchEvent (event) {
switch (event.type) {
case 'touchstart':
this.startX = event.touches[0].pageX
this.startY = event.touches[0].pageY
break
case 'touchend':
var spanX = event.changedTouches[0].pageX - this.startX
var spanY = event.changedTouches[0].pageY - this.startY
if(spanY < -50){
this.$router.push('/end')
}
break
case 'touchmove':
// 阻止默认行为
event.preventDefault()
break
}
},
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
@import './css/style.css';
</style>