vue移动端写的拖拽功能示例代码


Posted in Javascript onSeptember 09, 2020

相关知识点

touchstart 当在屏幕上按下手指时触发
touchmove 当在屏幕上移动手指时触发
touchend 当在屏幕上抬起手指时触发
mousedown mousemove mouseup对应的是PC端的事件
touchcancel 当一些更高级别的事件发生的时候(如电话接入或者弹出信息)会取消当前的touch操作,即触发 touchcancel。一般会在touchcancel时暂停游戏、存档等操作。

效果图

vue移动端写的拖拽功能示例代码

实现步骤html

总结了一下评论,好像发现大家都碰到了滑动的问题。就在这里提醒一下吧。可将该悬浮 DIV 同你的 scroller web 同级。

<template>
	<div id="webId">
  	<div>你的web页面</div>
	  <!-- 1.1 如果碰到滑动问题,请检查这里是否属于同一点。 -->
	  <!-- 悬浮的HTML -->
	  <div class="xuanfu" id="moveDiv"
	   @mousedown="down()" @touchstart="down()"
	   @mousemove.prevent.stop="move()"
     @touchmove.prevent.stop="move()"
	   @mouseup="end()" @touchend="end()"
	  >
	   <div class="yuanqiu">11</div>
	  </div>
	</div>
</template>

js

<script>
data() {
 return {
  flags: false,
  position: { x: 0, y: 0 },
  nx: '', ny: '', dx: '', dy: '', xPum: '', yPum: '',
 }
}

methods: {
 // 实现移动端拖拽
 down(){
  this.flags = true;
  let touch;
  if(event.touches){
    touch = event.touches[0];
  }else {
    touch = event;
  }
  this.position.x = touch.clientX;
  this.position.y = touch.clientY;
  this.dx = moveDiv.offsetLeft;
  this.dy = moveDiv.offsetTop;
 },
 move(){
  if(this.flags){
   let touch ;
   if(event.touches){
     touch = event.touches[0];
   }else {
     touch = event;
   }
   this.nx = touch.clientX - this.position.x;
   this.ny = touch.clientY - this.position.y;
   this.xPum = this.dx+this.nx;
   this.yPum = this.dy+this.ny;
   //添加限制:只允许在屏幕内拖动
	 const maxWidth = document.body.clientWidth - 54;//屏幕宽度减去悬浮框宽高
	 const maxHeight = document.body.clientHeight - 54;
	 if (this.xPum < 0) { //屏幕x限制
		this.xPum = 0;
	 } else if (this.xPum>maxWidth) {
	  this.xPum = maxWidth;
	 }
	 if (this.yPum < 0) { //屏幕y限制
		this.yPum = 0;
	 } else if (this.yPum>maxHeight) {
		this.yPum = maxHeight;
	 }
   moveDiv.style.left = this.xPum+"px";
   moveDiv.style.top = this.yPum +"px";
   //阻止页面的滑动默认事件
   document.addEventListener("touchmove",function(){ // 1.2 如果碰到滑动问题,请注意是否获取到 touchmove
     event.preventDefault();//jq 阻止冒泡事件
     // event.stopPropagation(); // 如果没有引入jq 就用 stopPropagation()
   },false);
  }
 },
//鼠标释放时候的函数
 end(){
  this.flags = false;
 },
}
</script>

css

<style>
 /*css样式可自定义 仅提供参考*/
 #webId { position: relative; }
 .xuanfu {
  height: 54px; /* rem = 12px */
  width: 54px;
  /*1.3 如果碰到滑动问题,请检查 z-index。z-index需比web大一级*/
  z-index: 999;
  position: fixed;
  top: 4.2rem;
  right: 3.2rem;
  border-radius: 0.8rem;
  background-color: rgba(0, 0, 0, 0.55);
 }
 .yuanqiu {
  height: 2.7rem;
  width: 2.7rem;
  border: 0.3rem solid rgba(140, 136, 136, 0.5);
  margin: 0.65rem auto;
  color: #000000;
  font-size: 1.6rem;
  line-height: 2.7rem;
  text-align: center;
  border-radius: 100%;
  background-color: #ffffff;
 }
</style>

总结

到此这篇关于vue移动端写的拖拽功能示例代码的文章就介绍到这了,更多相关vue移动端拖拽内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
对字符串进行HTML编码和解码的JavaScript函数
Feb 01 Javascript
Jquery插件之打造自定义的select标签
Nov 30 Javascript
showModelDialog弹出文件下载窗口的使用示例
Nov 19 Javascript
js 去除字符串第一位逗号的方法
Jun 07 Javascript
JavaScript中神奇的call()方法
Mar 12 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
Jun 19 Javascript
javascript如何写热点图
Dec 08 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
Sep 08 Javascript
jQuery Password Validation密码验证
Dec 30 Javascript
微信小程序实现自定义picker选择器弹窗内容
May 26 Javascript
Vue表单控件绑定图文详解
Feb 11 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
Jun 26 Javascript
vue路由的配置和页面切换详解
Sep 09 #Javascript
JavaScript 实现下雪特效的示例代码
Sep 09 #Javascript
在Vue中获取自定义属性方法:data-id的实例
Sep 09 #Javascript
vue+高德地图实现地图搜索及点击定位操作
Sep 09 #Javascript
vue实现几秒后跳转新页面代码
Sep 09 #Javascript
JS异步宏队列微队列原理详解
Sep 09 #Javascript
vue 项目软键盘回车触发搜索事件
Sep 09 #Javascript
You might like
用php过滤危险html代码的函数
2008/07/22 PHP
php mail to 配置详解
2014/01/16 PHP
php自定义session示例分享
2014/04/22 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
2019/10/09 PHP
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
js获取location.href的参数实例代码
2013/08/02 Javascript
JavaScript中检测变量是否存在遇到的一些问题
2013/11/11 Javascript
IE中的File域无法清空使用jQuery重设File域
2014/04/24 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
React Native实现简单的登录功能(推荐)
2016/09/19 Javascript
微信小程序 UI布局常用技巧整理总结
2016/12/05 Javascript
JS html时钟制作代码分享
2017/03/03 Javascript
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
python抓取某汽车网数据解析html存入excel示例
2013/12/04 Python
python输出指定月份日历的方法
2015/04/23 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
使用Python和Prometheus跟踪天气的使用方法
2019/05/06 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
Python Numpy 控制台完全输出ndarray的实现
2020/02/19 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
2020/04/21 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
基于CSS3实现的漂亮Menu菜单效果代码
2015/09/10 HTML / CSS
详解CSS3浏览器兼容
2016/12/14 HTML / CSS
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
DJI大疆无人机官方商城:全球领先的无人飞行器研发和生产商
2016/12/21 全球购物
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
高一政治教学反思
2014/01/28 职场文书
医学院毕业生自荐信范文
2014/03/06 职场文书
作风建设年活动总结
2014/08/27 职场文书
毕业生对母校寄语
2015/02/26 职场文书
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
2021/08/30 Java/Android