vuejs移动端实现div拖拽移动


Posted in Javascript onJuly 25, 2019

vue移动端实现div拖拽移动,供大家参考,具体内容如下

本文讲述,在使用VUE的移动端实现类似于iPhone的悬浮窗的效果。

相关知识点

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

效果图

vuejs移动端实现div拖拽移动

实现步骤

(一)html

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

html结构: <template> <div>你的web页面</div> <div>悬浮DIV</div> </template>

<template>
 <div id="webId">
 <div>你的web页面</div>
 <!-- 1.1 如果碰到滑动问题,请检查这里是否属于同一点。 -->
 <!-- 悬浮的HTML -->
 <div v-if="!isShow" class="xuanfu" id="moveDiv"
 @mousedown="down" @touchstart="down"
 @mousemove="move" @touchmove="move"
 @mouseup="end" @touchend="end"
 >
 <div class="yuanqiu">
 {{pageInfo.totalPage}}
 </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;
 var 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){
 var 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;
 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>
 .xuanfu {
 height: 4.5rem;
 width: 4.5rem;
 /*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>

实现好JS逻辑,基本上,问题不大。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS实现随机数生成算法示例代码
Aug 08 Javascript
Javascript实现颜色rgb与16进制转换的方法
Apr 18 Javascript
JS实现左右拖动改变内容显示区域大小的方法
Oct 13 Javascript
javaScript实现可缩放的显示区效果代码
Oct 26 Javascript
一览画面点击复选框后获取多个id值的方法
May 30 Javascript
jQuery如何封装输入框插件
Aug 19 Javascript
jquery实现表单获取短信验证码代码
Mar 13 Javascript
详解Require.js与Sea.js的区别
Aug 05 Javascript
微信公众平台获取access_token的方法步骤
Mar 29 Javascript
JavaScript代码异常监控实现过程详解
Feb 17 Javascript
Bootstrap FileInput实现图片上传功能
Jan 28 Javascript
js实现弹框效果
Mar 24 Javascript
vue实现拖拽的简单案例 不超出可视区域
Jul 25 #Javascript
vue实现一拉到底的滑动验证
Jul 25 #Javascript
微信小程序实现图片选择并预览功能
Jul 25 #Javascript
详细教你微信公众号正文页SVG交互开发技巧
Jul 25 #Javascript
微信小程序绘制图片发送朋友圈
Jul 25 #Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
Jul 25 #Javascript
微信小程序实现动态列表项的顺序加载动画
Jul 25 #Javascript
You might like
怎么使 Mysql 数据同步
2006/10/09 PHP
php连接mssql的一些相关经验及注意事项
2013/02/05 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
thinkPHP和onethink微信支付插件分享
2019/08/11 PHP
jquery 屏蔽一个区域内的所有元素,禁止输入
2009/10/22 Javascript
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
javascript利用控件对windows的操作实现原理与应用
2012/12/23 Javascript
使用javascript过滤html的字符串(注释标记法)
2013/07/08 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
2016/09/26 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
jquery+css实现简单的图片轮播效果
2017/08/07 jQuery
详解使用angular的HttpClient搭配rxjs
2017/09/01 Javascript
JavaScript代码实现txt文件的上传预览功能
2018/03/27 Javascript
js实现炫酷光感效果
2020/09/05 Javascript
vue+vant 上传图片需要注意的地方
2021/01/03 Vue.js
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
Python即时网络爬虫项目启动说明详解
2018/02/23 Python
python中for用来遍历range函数的方法
2018/06/08 Python
基于python绘制科赫雪花
2018/06/22 Python
python+tkinter实现学生管理系统
2019/08/20 Python
Python 中使用 PyMySQL模块操作数据库的方法
2019/11/10 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
python 将列表里的字典元素合并为一个字典实例
2020/09/01 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
巴西儿童时尚购物网站:Dinda
2019/08/14 全球购物
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
幼儿园中秋节活动反思
2014/02/16 职场文书
青奥会口号
2014/06/12 职场文书
2014迎国庆演讲稿
2014/09/19 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
2016年法制宣传月活动总结
2016/04/01 职场文书