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 相关文章推荐
jQuery+CSS 实现的超Sexy下拉菜单
Jan 17 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
Jul 15 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
Nov 18 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
Jan 07 Javascript
JS跨域问题详解
Nov 25 Javascript
微信小程序 实现拖拽事件监听实例详解
Nov 16 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
Apr 01 Javascript
Async Validator 异步验证使用说明
Jul 03 Javascript
js之切换全屏和退出全屏实现代码实例
Sep 09 Javascript
JS动态显示倒计时效果
Dec 12 Javascript
JavaScript基于用户照片姓名生成海报
May 29 Javascript
JavaScript流程控制(循环)
Dec 06 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
PHP对字符串的递增运算分析
2010/08/08 PHP
微信扫描二维码登录网站代码示例
2013/12/30 PHP
PHP中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
PHP中创建图像并绘制文字的例子
2014/11/19 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
JavaScript 动态创建VML的方法
2009/10/14 Javascript
Firebug 字幕文件JSON地址获取代码
2009/10/28 Javascript
js页面跳转常用的几种方式
2010/11/25 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
Kindeditor在线文本编辑器如何过滤HTML
2016/04/14 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
微信小程序实战之运维小项目
2017/01/17 Javascript
js基础之事件捕获与冒泡原理
2019/10/09 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
理解生产者消费者模型及在Python编程中的运用实例
2016/06/26 Python
pyqt5实现登录界面的模板
2020/05/30 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
Python识别验证码的实现示例
2020/09/30 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
全球性的在线购物网站:Zapals
2017/03/22 全球购物
马来西亚最热门的在线时尚商店:FashionValet
2018/11/11 全球购物
商务英语毕业生自荐信范文
2013/11/08 职场文书
毕业大学生自荐信
2014/06/17 职场文书
先进学校事迹材料
2014/12/30 职场文书
叶问观后感
2015/06/15 职场文书
会计主管竞聘书
2015/09/15 职场文书
Python爬虫:从m3u8文件里提取小视频的正确操作
2021/05/14 Python
Python提取PDF指定内容并生成新文件
2021/06/09 Python
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers