vue移动端的左右滑动事件详解
作者:染蓝了天 发布时间:2024-06-05 09:20:33
标签:vue,移动端,滑动
本文实例为大家分享了vue移动端左右滑动事件,供大家参考,具体内容如下
<!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">你滑动成功了!</p>
</div>
</script>
<script>
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();
let btnWidth = this.$refs.remove.offsetWidth; //$refs 减少获取dom节点的消耗
let btnImg = 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)';
}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)";
//让字段显示出来,或者写你需要的逻辑
this.isShow = true
}
}
}
}
})
var vm = new Vue({
el:'#box',
})
</script>
</body>
</html>
关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。
更多vue学习教程请阅读专题《vue实战教程》
来源:https://blog.csdn.net/weixin_41578603/article/details/79637376


猜你喜欢
- 方法组成模式方法里的所有语句都必须处在同一个归纳层次上无用的注释让代码自我表白标注为什么这样,而不是如何这样对方法表现进行描述等于重复表现这
- 一、粗心导致的语法错误SyntaxError1、input输入报错age=input('请输入你的年龄:')if age&g
- 介绍图像分类器通常在训练更多的图像时表现得更好。在图像分类模型中,一个常见的问题是,模型不能正确地对图像进行分类,只是因为它没有针对同一图像
- 总有一些程序在windows平台表现不稳定,动不动一段时间就无响应,但又不得不用,每次都是发现问题了手动重启,现在写个脚本定时检测进程是否正
- 1. js的数据类型1.1 js引入方式<!DOCTYPE html><html lang="en"&
- 一、下载地址Apache 5.4 —— httpd-2.4.4-win32.zipPHP 5.4 —— php-5.4.15-Win32-V
- W3C终于发布了第一个HTML5草案,大家还沉溺在HTML2XHTML转换的快乐和痛苦中时,却又突然发现,HTML5和XHTML2,到底谁是
- 这篇文章主要介绍了python 矢量数据转栅格数据代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 相信大家都试过将Python文件进行打包,来发给其他没有安装Python环境的用户使用,但通常情况下,打包生成的exe文件都很大,而产生这种
- 今天在项目中用到了弹出子窗口,就想到了用JavaScript实现的两种方法,一个是window.open();一个是window.showM
- 什么是标签平滑?在PyTorch中如何去使用它?在训练深度学习模型的过程中,过拟合和概率校准(probability calibration
- 需求:建立年级、班级两个数据表,获取年级表信息,根据年级,获取相应的班级效果图:不完美的地方就是在不选择年级的时候,是不能选择任何班级的。代
- 当你要使用data URI scheme的时候,你会发现,虽然他可以使用在绝大多数浏览器上,但无法再IE6和IE7上工作。不过值得庆幸的这一
- 前言cookie使用最多的地方想必是保存用户的账号与密码,可以避免用户每次登录时都要重新输入1.vue中cookie的安装在终端中输入命令n
- 自动化收集SQLSERVER诊断信息相信很多人都遇到过当SQLSERVER出现问题的时候,而你又解决不了需要DBA或者微软售后支持工程师去帮
- 基本环境配置python 3.6pycharmrequestscsvtime相关模块pip安装即可目标网页分析网页一切的一切都在图里找到数据
- 程序设计中三种基本机构是顺序结构、选择结构和循环结构。顺序结构语句是程序中最基础的语句,赋值语句、输入/输出语句、模块导入语句等都是顺序结构
- css加载器在webpack中,所有的资源(js文件、css文件、模板文件,图片文件等等)都被看成是一个模块,因此多有的资源都是可以被加载的
- “位置:首页 第一屏通栏 格式:jpg 尺寸:960*90 ……”在工作我们经常会接到这样的banner设计需求,由
- batch的lstm# 导入相应的包import torchimport torch.nn as nnimport torch.nn.fun