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 相关文章推荐
jQuery之自动完成组件的深入解析
Jun 19 Javascript
jqueyr判断checkbox组的选中(示例代码)
Nov 08 Javascript
node.js中的fs.mkdir方法使用说明
Dec 17 Javascript
jqGrid表格应用之新增与删除数据附源码下载
Dec 02 Javascript
详解微信小程序入门五: wxml文件引用、模版、生命周期
Jan 20 Javascript
Vue基于NUXT的SSR详解
Oct 24 Javascript
解决vue axios的封装 请求状态的错误提示问题
Sep 25 Javascript
koa源码中promise的解读
Nov 13 Javascript
微信小程序实现的canvas合成图片功能示例
May 03 Javascript
element form 校验数组每一项实例代码
Oct 10 Javascript
Vuex的热更替如何实现
Jun 05 Javascript
JavaScript 判断数据类型的4种方法
Sep 11 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生成EXCEL的东东
2006/10/09 PHP
一些关于PHP的知识
2006/11/17 PHP
php 一元分词算法
2009/11/30 PHP
PHP chop()函数讲解
2019/02/11 PHP
jquery插件珍藏(图片局部放大/信息提示框)
2013/01/08 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
详解jQuery中关于Ajax的几个常用的函数
2017/07/17 jQuery
vue中路由验证和相应拦截的使用详解
2017/12/13 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
Vue2.0点击切换类名改变样式的方法
2018/08/22 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
jQuery选择器之基本选择器用法实例分析
2019/02/19 jQuery
element-ui表格合并span-method的实现方法
2019/05/21 Javascript
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
js实现自动播放匀速轮播图
2020/02/06 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
python 为什么说eval要慎用
2019/03/26 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
2019/11/21 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
python3爬虫中多线程的优势总结
2020/11/24 Python
python脚本定时发送邮件
2020/12/22 Python
美国最大的骑马用品零售商:HorseLoverZ
2017/01/12 全球购物
Trunki英国官网:儿童坐骑式行李箱
2017/05/30 全球购物
SKECHERS斯凯奇中国官网:来自美国的运动休闲品牌
2018/11/14 全球购物
大学本科毕业生求职简历的自我评价
2013/10/09 职场文书
求职简历推荐信范文
2013/12/02 职场文书
校园报刊亭的创业计划书
2014/01/02 职场文书
体育运动会广播稿
2014/10/05 职场文书
python垃圾回收机制原理分析
2022/04/13 Python