Vue.js是一个轻量级的JavaScript框架,广泛用于构建用户界面。它提供了一套丰富的指令,帮助开发者快速构建交互式的Web应用程序。本文将介绍个人使用的滑动指令,并解释它们的用法和功能。大家可以根据具体的需求,并结合其他Vue特性和功能来实现更复杂的交互效果。
var timer = null
// 写一个函数 接收一个dom元素和一个回调函数
function touchmove(dom, callback) {
//起始
let startX;
let startY;
let startTime;
// 结束
let endX;
let endY;
let endTime;
// 移动
let moveX;
let moveY;
let moveTime;
// 监听触摸开始
dom.addEventListener("touchstart", (e) => {
// 获取开始触摸的时间 X和Y的位置
startTime = new Date().getTime();
startX = Math.round(e.touches[0].screenX);
startY = Math.round(e.touches[0].screenY);
},);
// 监听触摸结束
dom.addEventListener("touchend", (e) => {
// 结束触摸时间 X和Y离开的位置
endTime = new Date().getTime();
endX = Math.round(e.changedTouches[0].screenX);
endY = Math.round(e.changedTouches[0].screenY);
// 算一下触摸的 上下/左右 的距离
moveX = startX - endX;
moveY = startY - endY;
moveTime = endTime - startTime;
// 给个条件 上下/左右30px或者触摸时间超过 500ms
if (Math.abs(moveY) > 30 || Math.abs(moveX) > 30 || moveTime > 500) {
// 判断方向 触发回调函数并把数据对象传回
if (Math.abs(moveX) > Math.abs(moveY)) {
//左右
moveX > 0
? callback({ direction: "right", to: 'left', value: moveX })
: callback({ direction: "left", to: 'right', value: Math.abs(moveX) });
} else {
//上下
moveY > 0
? callback({ direction: "down", to: 'up', value: moveY })
: callback({ direction: "up", to: 'down', value: Math.abs(moveY) });
}
}
},);
}
export default {
mounted(el) {
touchmove(el, (e) => {
// 从右往左滑动
if (e.to === 'left') {
el.style.transform = `translateX(-${60}px)`;
el.style.transition = `all 0.1s ease-in-out`;
// 监听删除按钮元素的点击事件
el.childNodes[2].addEventListener('click', () => {
showHide()
})
// 超过五秒不点击 隐藏
timer = setTimeout(() => {
el.style.transform = `translateX(${0}px)`;
el.style.transition = `all 0.1s ease-in-out`;
}, 5000)
}
// 从左往右滑动
if (e.to === 'right') {
showHide()
}
// 清除定时器 隐藏删除按钮
function showHide() {
// 清除定时器
clearTimeout(timer)
el.style.transform = `translateX(${0}px)`;
el.style.transition = `all 0.1s ease-in-out`;
}
})
}
}
以上就是左滑指令的 demo,仅提供思路
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。