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分析、压缩工具 JavaScript Analyser
Nov 30 Javascript
用JQuery调用Session的实现代码
Oct 29 Javascript
jQuery autocomplate 自扩展插件、自动完成示例代码
Mar 28 Javascript
用js将内容复制到剪贴板兼容浏览器
Mar 18 Javascript
前端必备神器 Snap.svg 弹动效果
Nov 10 Javascript
js放到head中失效的原因与解决方法
Mar 07 Javascript
JS判断一个数是否是水仙花数
Jun 11 Javascript
基于AngularJS实现的工资计算器实例
Jun 16 Javascript
angularJs中json数据转换与本地存储的实例
Oct 08 Javascript
一文快速了解JQuery中的AJAX
May 31 jQuery
ES6 Class中实现私有属性的一些方法总结
Jul 08 Javascript
Openlayers学习之加载鹰眼控件
Sep 28 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数组函数
2008/08/18 PHP
php加速器eAccelerator的配置参数、API详解
2014/05/05 PHP
Smarty模板简单配置与使用方法示例
2016/05/23 PHP
遍历echsop的region表形成缓存的程序实例代码
2016/11/01 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
javascript hashtable实现代码
2009/10/13 Javascript
javascript中检测变量的类型的代码
2010/12/28 Javascript
学习js在线html(富文本,所见即所得)编辑器
2012/12/18 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
关于Vue源码vm.$watch()内部原理详解
2019/04/26 Javascript
vue $set 给数据赋值的实例
2019/11/09 Javascript
vue实现图片上传到后台
2020/06/29 Javascript
Python基于scrapy采集数据时使用代理服务器的方法
2015/04/16 Python
Python import用法以及与from...import的区别
2015/05/28 Python
Python基于PycURL实现POST的方法
2015/07/25 Python
python executemany的使用及注意事项
2017/03/13 Python
PyQt5显示GIF图片的方法
2019/06/17 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
python3实现简单飞机大战
2020/11/29 Python
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
Internet主要有哪些网络群组成
2015/12/24 面试题
函授自我鉴定
2013/11/06 职场文书
简短的公司员工自我评价分享
2013/11/13 职场文书
如何写一份好的自荐信
2014/01/02 职场文书
超市5.1促销活动
2014/01/15 职场文书
四风问题自查报告剖析材料
2014/02/08 职场文书
师德师风学习材料
2014/12/19 职场文书
2016年区委书记抓基层党建工作公开承诺书
2016/03/25 职场文书
蔬果开业典礼发言稿应该怎么写?
2019/09/03 职场文书
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL
梳理总结Python开发中需要摒弃的18个坏习惯
2022/01/22 Python