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 相关文章推荐
javascript Keycode对照表
Oct 24 Javascript
使用jquery修改表单的提交地址基本思路
Jun 04 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
Jun 09 Javascript
JsRender实用入门教程
Oct 31 Javascript
js实现鼠标触发图片抖动效果的方法
Feb 27 Javascript
jQuery晃动层特效实现方法
Mar 09 Javascript
JS基于递归实现倒计时效果的方法
Nov 26 Javascript
微信小程序 template模板详解及实例
Feb 21 Javascript
webpack配置之后端渲染详解
Oct 26 Javascript
超轻量级的js时间库miment使用解析
Aug 02 Javascript
解决vue addRoutes不生效问题
Aug 04 Javascript
浅析JavaScript预编译和暗示全局变量
Sep 03 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
基于Zend的Captcha机制的应用
2013/05/02 PHP
PHP连接MySQL数据的操作要点
2015/03/20 PHP
isArray()函数(JavaScript中对象类型判断的几种方法)
2009/11/26 Javascript
jQuery 获取对象 定位子对象
2010/05/31 Javascript
jQuery对象和DOM对象使用说明
2010/06/25 Javascript
关于递归运算的顺序测试代码
2011/11/30 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
2013/03/20 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
三种检测iPhone/iPad设备方向的方法
2014/04/23 Javascript
小结Node.js中非阻塞IO和事件循环
2014/09/18 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
Node.js实用代码段之获取Buffer对象字节长度
2016/03/17 Javascript
基本DOM节点操作
2017/01/17 Javascript
JavaScript 函数节流详解及方法总结
2017/02/09 Javascript
Vue.directive使用注意(小结)
2018/08/31 Javascript
对angularJs中自定义指令replace的属性详解
2018/10/09 Javascript
快速搭建Node.js(Express)用户注册、登录以及授权的方法
2019/05/09 Javascript
使用node.JS中的url模块解析URL信息
2020/02/06 Javascript
Vue项目打包编译优化方案
2020/09/16 Javascript
[00:36]DOTA2上海特级锦标赛 LGD战队宣传片
2016/03/04 DOTA
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
Python编写一个优美的下载器
2018/04/15 Python
python去掉 unicode 字符串前面的u方法
2018/10/21 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
Python实现截取PDF文件中的几页代码实例
2019/03/11 Python
pandas数据筛选和csv操作的实现方法
2019/07/02 Python
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
运动会通讯稿300字
2014/02/02 职场文书
工作评语大全
2014/04/26 职场文书
质量承诺书怎么写
2014/05/24 职场文书
护士找工作求职信
2014/07/02 职场文书
我们的节日端午节活动总结
2015/02/11 职场文书
纪检监察立案决定书
2015/06/24 职场文书
期中考试后的感想
2015/08/07 职场文书