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 相关文章推荐
JavaScript 获取事件对象的注意点
Jul 29 Javascript
js定时器怎么写?就是在特定时间执行某段程序
Oct 11 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
Oct 24 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
Sep 15 Javascript
node.js中的path.extname方法使用说明
Dec 09 Javascript
jquery制作 随机弹跳的小球特效
Feb 01 Javascript
iframe里使用JavaScript控制主页转向的方法
Apr 03 Javascript
初识angular框架后的所思所想
Feb 19 Javascript
angularjs实现柱状图动态加载的示例
Dec 11 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
Jul 19 Javascript
基于PHP pthreads实现多线程代码实例
Jun 24 Javascript
JavaScript常用进制转换及位运算实例解析
Oct 14 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数组的概述及分类与声明代码演示
2013/02/26 PHP
拖动一个HTML元素
2006/12/22 Javascript
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
理解JavaScript的prototype属性
2012/02/11 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
Js遍历键值对形式对象或Map形式的方法
2016/08/08 Javascript
基于jQuery实现表格内容的筛选功能
2016/08/21 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
vue根据条件不同显示不同按钮的操作
2020/08/04 Javascript
Python中的startswith和endswith函数使用实例
2014/08/25 Python
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
Python查询IP地址归属完整代码
2017/06/21 Python
Python paramiko模块的使用示例
2018/04/11 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
css3实现二维码扫描特效的示例
2020/10/29 HTML / CSS
博朗(Braun)俄罗斯官方商店:德国小家电品牌
2019/09/24 全球购物
工程部主管岗位职责
2013/11/17 职场文书
大专生简历的自我评价
2013/11/26 职场文书
舞蹈毕业生的自我评价
2014/03/05 职场文书
以幸福为主题的活动方案
2014/08/22 职场文书
中学生思想品德评语
2014/12/31 职场文书
个人先进事迹总结
2015/02/26 职场文书
行政助理岗位职责范本
2015/04/11 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
无犯罪记录证明样本
2015/06/16 职场文书
少先队大队委竞选口号
2015/12/25 职场文书