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 相关文章推荐
Js的MessageBox
Dec 03 Javascript
Javascript 面向对象 重载
May 13 Javascript
jquery 圆形旋转图片滚动切换效果
Jan 19 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
Jun 20 Javascript
node.js中的buffer.fill方法使用说明
Dec 14 Javascript
jQuery选择id属性带有点符号元素的方法
Mar 17 Javascript
javascript解决IE6下hover问题的方法
Jul 28 Javascript
JavaScript实现的伸展收缩型菜单代码
Oct 14 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
Dec 26 Javascript
详解微信小程序设置底部导航栏目方法
Jun 29 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
Mar 27 Javascript
jQuery实现轮播图及其原理详解
Apr 12 jQuery
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
VOLVO车载收音机
2021/03/02 无线电
SMARTY学习手记
2007/01/04 PHP
PHP 编程安全性小结
2010/01/08 PHP
PHP仿盗链代码
2012/06/03 PHP
php二分查找二种实现示例
2014/03/12 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
HTML中嵌入PHP的简单方法
2016/02/16 PHP
PHP获取远程http或ftp文件的md5值的方法
2019/04/15 PHP
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
网页右键ie不支持event.preventDefault和event.returnValue (需要加window)
2013/02/22 Javascript
jquery设置元素的readonly和disabled的写法
2013/09/22 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
2015/09/02 Javascript
JS冒泡事件与事件捕获实例详解
2016/11/25 Javascript
jquery ajaxfileupload异步上传插件
2017/11/21 jQuery
webpack 打包压缩js和css的方法示例
2018/03/20 Javascript
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
python实现划词翻译
2020/04/23 Python
Python functools模块学习总结
2015/05/09 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
Python OpenCV实现图片上输出中文
2018/01/22 Python
numpy.transpose对三维数组的转置方法
2018/04/17 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
python 接口实现 供第三方调用的例子
2019/08/13 Python
Python 50行爬虫抓取并处理图灵书目过程详解
2019/09/20 Python
泰国汽车、火车和轮渡票预订网站:Bus Online Ticket
2017/09/09 全球购物
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
Java如何支持I18N?
2016/10/31 面试题
英语专业学生的自我评价
2013/12/30 职场文书
个人评价范文分享
2014/01/11 职场文书
小学生操行评语大全
2014/04/22 职场文书
党员证明模板
2015/06/19 职场文书
大学学生会竞选稿
2015/11/19 职场文书
mysql sum(if())和count(if())的用法说明
2022/01/18 MySQL