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 相关文章推荐
DOM下的节点属性和操作小结
May 14 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
Apr 04 Javascript
js限制checkbox选中个数以限制六个为例
Jul 15 Javascript
基于jQuery实现顶部导航栏功能
Dec 27 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
Jan 13 Javascript
详解Angular.js中$http拦截器的介绍及使用
Jul 04 Javascript
angular4自定义组件详解
Sep 28 Javascript
使用3D引擎threeJS实现星空粒子移动效果
Sep 13 Javascript
Nuxt配合Node在实际生产中的应用详解
Aug 07 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
May 23 Javascript
JS 封装父页面子页面交互接口的实例代码
Jun 25 Javascript
ES6 Map结构的应用实例分析
Jun 26 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
咖啡豆的最常见发酵处理方法,详细了解一下
2021/03/03 冲泡冲煮
更改localhost为其他名字的方法
2014/02/10 PHP
自己写的php中文截取函数mb_strlen和mb_substr
2015/02/09 PHP
PHP远程调试之XDEBUG
2015/12/29 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
2016/03/15 PHP
php实现有序数组旋转后寻找最小值方法
2018/09/27 PHP
PHP PDOStatement::fetchAll讲解
2019/01/31 PHP
Javascript this指针
2009/07/30 Javascript
JS的replace方法详细介绍
2012/11/09 Javascript
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
使用Math.floor与Math.random取随机整数的方法详解
2013/05/07 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
js获取客户端操作系统类型的方法【测试可用】
2016/05/27 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
Vue结合SignalR实现前后端实时消息同步
2017/09/19 Javascript
五步轻松实现zTree的使用
2017/11/01 Javascript
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
[33:39]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第二局
2016/02/27 DOTA
[00:48]食人魔魔法师至宝“金鹏之幸”全新模型和自定义特效展示
2019/12/19 DOTA
python MNIST手写识别数据调用API的方法
2018/08/08 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
基于python实现高速视频传输程序
2019/05/05 Python
Python HTMLTestRunner库安装过程解析
2020/05/25 Python
Tensorflow--取tensorf指定列的操作方式
2020/06/30 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
台湾专柜女包:KINAZ
2019/12/26 全球购物
民生工程实施方案
2014/03/22 职场文书
岗位聘任书范文
2014/03/29 职场文书
中职毕业生自我鉴定范文(3篇)
2014/09/28 职场文书
乡镇民主生活会发言材料
2014/10/20 职场文书
教师学习群众路线心得体会
2014/11/04 职场文书
MySQL 四种连接和多表查询详解
2021/07/16 MySQL