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实现点击按钮,连续地向textarea中添加值的实例代码
Mar 08 Javascript
jquery获取当前日期的方法
Jan 14 Javascript
微信WeixinJSBridge API使用实例
May 25 Javascript
jquery获取css的color值返回RGB的方法
Dec 18 Javascript
JSON字符串和对象相互转换实例分析
Jun 16 Javascript
图文详解JavaScript的原型对象及原型链
Aug 02 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
Aug 17 Javascript
socket.io实现在线群聊功能
Apr 07 Javascript
JS实现的加减乘除四则运算计算器示例
Aug 09 Javascript
Vue 父子组件的数据传递、修改和更新方法
Mar 01 Javascript
Vue2.0实现组件数据的双向绑定问题
Mar 06 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
Mar 16 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编程语言开发动态WAP页面
2006/10/09 PHP
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
2013/06/26 PHP
PHP实现今天是星期几的几种写法
2013/09/26 PHP
帝国cms常用标签汇总
2015/07/06 PHP
浅谈php的优缺点
2015/07/14 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
JavaScript 笔记二 Array和Date对象方法
2010/05/22 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
js获取当前地址 JS获取当前URL的示例代码
2014/02/26 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
innerHTML中标签可以换行的方法汇总
2015/08/14 Javascript
jQuery中的deferred使用方法
2017/03/27 jQuery
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
什么是Vue.js框架 为什么选择它?
2017/10/17 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
Vue源码解析之数组变异的实现
2018/12/04 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
微信小程序保持session会话的方法
2020/03/20 Javascript
在vue中使用jsonp进行跨域请求接口操作
2020/10/29 Javascript
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
详解python中的json的基本使用方法
2016/12/21 Python
解读python logging模块的使用方法
2018/04/17 Python
更换Django默认的模板引擎为jinja2的实现方法
2018/05/28 Python
使用Py2Exe for Python3创建自己的exe程序示例
2018/10/31 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
Python实现的统计文章单词次数功能示例
2019/07/08 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
2019/07/31 Python
python 数据分析实现长宽格式的转换
2020/05/18 Python
Python 在函数上添加包装器
2020/07/28 Python
国贸专业求职信
2014/06/28 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
使用CSS设置滚动条样式
2022/01/18 HTML / CSS