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 splice()方法详解
Sep 22 Javascript
jquery预览图片实现鼠标放上去显示实际大小
Jan 16 Javascript
javascript实现禁止右键和F12查看源代码
Dec 26 Javascript
node.js 使用ejs模板引擎时后缀换成.html
Apr 22 Javascript
详解jQuery插件开发方式
Nov 22 Javascript
微信小程序 后台登录(非微信账号)实例详解
Mar 31 Javascript
jQuery Validate表单验证插件实现代码
Jun 08 jQuery
AngularJS 表单验证手机号的实例(非必填)
Nov 12 Javascript
基于html+css+js实现简易计算器代码实例
Feb 28 Javascript
javascript使用正则表达式实现注册登入校验
Sep 23 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
Mar 01 jQuery
vue3不同环境下实现配置代理
May 25 Vue.js
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下通过系统信号量加锁方式获取递增序列ID
2009/09/25 PHP
php打开文件fopen函数的使用说明
2013/07/05 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
2014/12/19 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
2015/02/10 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
thinkPHP自定义类实现方法详解
2016/11/30 PHP
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
基于jquery的动态创建表格的插件
2011/04/05 Javascript
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
js中判断对象是否为空的三种实现方法
2013/12/23 Javascript
javascript实现2016新年版日历
2016/01/25 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
js实现字符全排列算法的简单方法
2017/05/01 Javascript
详解vue-resource promise兼容性问题
2017/06/20 Javascript
详解开源的JavaScript插件化框架MinimaJS
2017/10/26 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
[48:24]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第一场 12.09
2020/12/12 DOTA
Python使用asyncio包处理并发详解
2017/09/09 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
CSS3使用border-radius属性制作圆角
2014/12/22 HTML / CSS
html5使用canvas实现图片下载功能的示例代码
2017/08/26 HTML / CSS
美国最大婚纱连锁店运营商:David’s Bridal
2019/03/12 全球购物
最新党员思想汇报
2014/01/01 职场文书
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
运动员口号
2014/06/09 职场文书
学前教育见习总结
2015/06/23 职场文书
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android
Python+OpenCV实现在图像上绘制矩形
2022/03/21 Python