vue实现移动端悬浮窗效果


Posted in Javascript onDecember 01, 2018

本文讲述,在使用VUE的移动端实现类似于iPhone的悬浮窗的效果。

相关知识点

touchstart 当在屏幕上按下手指时触发

touchmove 当在屏幕上移动手指时触发

touchend 当在屏幕上抬起手指时触发
mousedown mousemove mouseup对应的是PC端的事件

touchcancel 当一些更高级别的事件发生的时候(如电话接入或者弹出信息)会取消当前的touch操作,即触发touchcancel。一般会在touchcancel时暂停游戏、存档等操作。

效果图

vue实现移动端悬浮窗效果

实现步骤

1.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>

2.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";
  //阻止页面的滑动默认事件;如果碰到滑动问题,1.2 请注意是否获取到 touchmove
  document.addEventListener("touchmove",function(){
   event.preventDefault();
  },false);
 }
 },
//鼠标释放时候的函数
 end(){
 this.flags = false;
 },
}
</script>

3.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操作ACCESS数据库(读增改删)的代码
May 14 Javascript
Javascript中正则表达式的全局匹配模式分析
Apr 26 Javascript
微信小程序链接传参并跳转新页面
Nov 29 Javascript
详解Vue.js动态绑定class
Dec 20 Javascript
jQuery基于正则表达式的表单验证功能示例
Jan 21 Javascript
基于vue 动态加载图片src的解决方法
Feb 05 Javascript
vue项目中使用百度地图的方法
Jun 08 Javascript
vue项目添加多页面配置的步骤详解
May 22 Javascript
微信小程序实现左侧滑栏过程解析
Aug 26 Javascript
vue开发中遇到的问题总结
Apr 07 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
May 10 Javascript
关于JavaScript 中 if包含逗号表达式
Nov 27 Javascript
vue拖拽组件使用方法详解
Dec 01 #Javascript
vue实现div拖拽互换位置
Jul 29 #Javascript
vue插件draggable实现拖拽移动图片顺序
Dec 01 #Javascript
vue.draggable实现表格拖拽排序效果
Dec 01 #Javascript
vuedraggable+element ui实现页面控件拖拽排序效果
Jul 29 #Javascript
Vue组件Draggable实现拖拽功能
Dec 01 #Javascript
BootStrap modal实现拖拽功能
Dec 01 #Javascript
You might like
PHP JSON格式数据交互实例代码详解
2011/01/13 PHP
PHP封装分页函数实现文本分页和数字分页
2014/10/23 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
2019/04/11 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
JSON辅助格式化处理方法
2013/03/26 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
2016/02/16 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
js微信分享实现代码
2020/10/11 Javascript
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
elementUI select组件默认选中效果实现的方法
2019/03/25 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
2019/05/10 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
JavaScript回调函数callback用法解析
2020/01/14 Javascript
Vue.js实现立体计算器
2020/02/22 Javascript
详解vue高级特性
2020/06/09 Javascript
浅谈JavaScript节流和防抖函数
2020/08/25 Javascript
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
Python常见数据结构详解
2014/07/24 Python
windows环境下tensorflow安装过程详解
2018/03/30 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
浅谈flask源码之请求过程
2018/07/26 Python
pytorch使用指定GPU训练的实例
2019/08/19 Python
详解基于python的多张不同宽高图片拼接成大图
2019/09/26 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
Python中bisect的用法及示例详解
2020/07/20 Python
python爬虫要用到的库总结
2020/07/28 Python
海淘母婴商城:国际妈咪
2016/07/23 全球购物
如何打造一封优秀的留学推荐信
2014/01/25 职场文书
创先争优活动方案
2014/02/12 职场文书
大学毕业生管理学求职信
2014/09/01 职场文书
2015年社区精神文明工作总结
2015/05/26 职场文书
创业计划书之冷饮店
2019/09/27 职场文书