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 相关文章推荐
jquery下利用jsonp跨域访问实现方法
Jul 29 Javascript
JavaScript.The.Good.Parts阅读笔记(二)作用域&amp;闭包&amp;减缓全局空间污染
Nov 16 Javascript
jquery 读取页面load get post ajax 四种方式代码写法
Apr 02 Javascript
JS打字效果的动态菜单代码分享
Aug 21 Javascript
JavaScript6 let 新语法优势介绍
Jul 15 Javascript
聊聊JS动画库 Velocity.js的使用
Mar 13 Javascript
Vue 项目分环境打包的方法示例
Aug 03 Javascript
让axios发送表单请求形式的键值对post数据的实例
Aug 11 Javascript
微信小程序事件 bindtap bindinput代码实例
Aug 26 Javascript
element-ui 文件上传修改文件名的方法示例
Nov 05 Javascript
vue中实现动态生成二维码的方法
Feb 21 Javascript
JavaScript原型链详解
Nov 07 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小教程之实现双向链表
2014/06/12 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
php使用curl获取header检测开启GZip压缩的方法
2018/08/15 PHP
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
借助script进行Http跨域请求:JSONP实现原理及代码
2013/03/19 Javascript
jquery实现可拖拽弹出层特效
2015/01/04 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
2015/07/01 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
js Canvas实现圆形时钟教程
2016/09/19 Javascript
js实现京东轮播图效果
2017/06/30 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
2017/12/27 jQuery
如何利用@angular/cli V6.0直接开发PWA应用详解
2018/05/06 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
Cython 三分钟入门教程
2009/09/17 Python
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
理解Python中的With语句
2016/03/18 Python
Python3 解决读取中文文件txt编码的问题
2019/12/20 Python
手把手教你进行Python虚拟环境配置教程
2020/02/03 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
虚拟机下载python是否需要联网
2020/07/27 Python
python openCV实现摄像头获取人脸图片
2020/08/20 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
CSS3圆角和渐变2种常用功能详解
2016/01/06 HTML / CSS
波兰在线体育用品商店:Hop-Sport.pl
2019/07/23 全球购物
关于安全演讲稿
2014/05/09 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
乡镇2014法制宣传日活动总结
2014/11/01 职场文书
黄山导游词
2015/01/31 职场文书
党员自我评价范文2015
2015/03/03 职场文书
小学生安全保证书
2015/05/09 职场文书
公诉意见书范文
2015/06/05 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书
vue的项目如何打包上线
2022/04/13 Vue.js