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的Repeater实现代码
Jul 17 Javascript
js网页版计算器的简单实现
Jul 02 Javascript
javascript中传统事件与现代事件
Jun 23 Javascript
jQuery点击其他地方时菜单消失的实现方法
Apr 22 Javascript
ES6中的箭头函数实例详解
Apr 06 Javascript
Node.js中流(stream)的使用方法示例
Jul 16 Javascript
vue与bootstrap实现时间选择器的示例代码
Aug 26 Javascript
js运算符的一些特殊用法
Jul 29 Javascript
vue生成文件本地打开查看效果的实例
Sep 06 Javascript
JS简单判断是否在微信浏览器打开的方法示例
Jan 08 Javascript
详解vue的数据劫持以及操作数组的坑
Apr 18 Javascript
JavaScript实现前端网页版倒计时
Mar 24 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 彩色文字实现代码
2009/06/29 PHP
php设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
php防止伪造数据从地址栏URL提交的方法
2014/08/24 PHP
IE8 浏览器Cookie的处理
2009/01/31 Javascript
jQuery live( type, fn ) 委派事件实现
2009/10/11 Javascript
jquery必须知道的一些常用特效方法及使用示例(整理)
2013/06/24 Javascript
AngularJS内置指令
2015/02/04 Javascript
基于jQuery仿淘宝产品图片放大镜特效
2020/10/19 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
JavaScript Promise 用法
2016/06/14 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
jquery实现图片轮播器
2017/05/23 jQuery
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
[00:34]拔城逐梦,热血永恒!2020(秋)完美世界城市挑战赛报名开启
2020/10/09 DOTA
跟老齐学Python之变量和参数
2014/10/10 Python
Python迭代器和生成器介绍
2015/03/06 Python
python使用wmi模块获取windows下硬盘信息的方法
2015/05/15 Python
Python二分查找详解
2015/09/13 Python
python+mongodb数据抓取详细介绍
2017/10/25 Python
python pandas消除空值和空格以及 Nan数据替换方法
2018/10/30 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
Python 静态方法和类方法实例分析
2019/11/21 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
2020/04/27 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
Python爬取微信小程序通用方法代码实例详解
2020/09/29 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
导出HTML5 Canvas图片并上传服务器功能
2019/08/16 HTML / CSS
澳大利亚工具仓库:Tools Warehouse
2018/10/15 全球购物
保护环境倡议书
2014/04/14 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
使用goaccess分析nginx日志的详细方法
2021/07/09 Servers
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
2021/07/16 Java/Android
springboot集成springCloud中gateway时启动报错的解决
2021/07/16 Java/Android