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构造函数的重载和工厂方法
Apr 07 Javascript
jQuery函数的等价原生函数代码示例
May 27 Javascript
javascript创建函数的20种方式汇总
Jun 23 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
Oct 09 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
Sep 24 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
Nov 16 Javascript
js实现右键自定义菜单
Dec 03 Javascript
JS正则获取HTML元素的方法
Mar 31 Javascript
layui 监听表格复选框选中值的方法
Aug 15 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
Oct 12 Javascript
require.js 加载过程与使用方法介绍
Oct 30 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
Oct 15 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 数据结构 算法描述 冒泡排序 bubble sort
2011/07/10 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
2014/01/14 PHP
PHP+Ajax 检测网络是否正常实例详解
2016/12/16 PHP
PHP+jQuery实现双击修改table表格功能示例
2019/02/21 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
2019/03/21 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
可输入的下拉框
2006/06/19 Javascript
use jscript List Installed Software
2007/06/11 Javascript
JavaScript 继承详解(一)
2009/07/13 Javascript
javscript对象原型的一些看法
2010/09/19 Javascript
解析prototype,JQuery中跳出each循环的方法
2013/12/12 Javascript
JS正则表达式验证数字代码
2014/01/28 Javascript
Javascript编程中几种继承方式比较分析
2015/11/28 Javascript
js点击文本框弹出可选择的checkbox复选框
2016/02/03 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
angular6的table组件开发的实现示例
2018/12/26 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
[01:28:43]2014 DOTA2华西杯精英邀请赛5 24 DK VS CIS
2014/05/25 DOTA
Python整型运算之布尔型、标准整型、长整型操作示例
2017/07/21 Python
python解释器spython使用及原理解析
2019/08/24 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
2020/10/28 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
linux下进程间通信的方式
2013/01/23 面试题
写自荐信的七个技巧
2013/10/15 职场文书
户外活动总结范文
2014/04/30 职场文书
服务理念标语
2014/06/18 职场文书
好的促销活动方案
2014/08/21 职场文书
普通党员个人剖析材料
2014/10/08 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
创业计划书之熟食店
2019/10/16 职场文书