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同时提交多个Web表单的方法
Dec 26 Javascript
防止浏览器记住用户名及密码的简单实用方法
Apr 22 Javascript
js函数中onmousedown和onclick的区别和联系探讨
May 19 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
Jun 09 Javascript
JSON格式的键盘编码对照表
Jan 29 Javascript
包含中国城市的javascript对象实例
Aug 03 Javascript
jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
Aug 10 Javascript
微信小程序 实战实例开发流程详细介绍
Jan 05 Javascript
解决axios会发送两次请求,有个OPTIONS请求的问题
Oct 25 Javascript
详解原生JS动态添加和删除类
Mar 26 Javascript
在Vue项目中,防止页面被缩放和放大示例
Oct 28 Javascript
Javascript ParentNode和ChildNode接口原理解析
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 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
深入解析fsockopen与pfsockopen的区别
2013/07/05 PHP
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
PHP基于单例模式实现的mysql类
2016/01/09 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
一个用js实现控制台控件的代码
2007/09/04 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
JavaScript隐式类型转换
2016/03/15 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
Angular.js组件之input mask对input输入进行格式化详解
2017/07/10 Javascript
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
python ElementTree 基本读操作示例
2009/04/09 Python
Python入门篇之编程习惯与特点
2014/10/17 Python
python实现端口转发器的方法
2015/03/13 Python
Python3进制之间的转换代码实例
2019/08/24 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
python读取tif图片时保留其16bit的编码格式实例
2020/01/13 Python
python多进程使用函数封装实例
2020/05/02 Python
Python使用configparser读取ini配置文件
2020/05/25 Python
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
实验室的标语
2014/06/20 职场文书
幼儿生日活动方案
2014/08/27 职场文书
公司离职证明范本(5篇)
2014/09/17 职场文书
初中成绩单评语
2014/12/29 职场文书
2015年医院护理部工作总结
2015/04/23 职场文书
结婚堵门保证书
2015/05/08 职场文书
在CSS中使用when/else的方法
2022/01/18 HTML / CSS
《废话连篇——致新手》——chinapizza
2022/04/05 无线电