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之编码规范 推荐
May 23 Javascript
浅析JavaScript动画
Jun 10 Javascript
jquery组件WebUploader文件上传用法详解
Oct 23 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
Jan 04 Javascript
prototype与__proto__区别详细介绍
Jan 09 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
Apr 24 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
Aug 23 Javascript
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
Jan 26 Javascript
JavaScript分步实现一个出生日期的正则表达式
Mar 22 Javascript
webpack项目轻松混用css module的方法
Jun 12 Javascript
vue和better-scroll实现列表左右联动效果详解
Apr 29 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
Jul 30 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脚本的10个技巧(2)
2006/10/09 PHP
php 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
简单实用的.net DataTable导出Execl
2013/10/28 PHP
10个基于浏览器的JavaScript调试工具分享
2013/02/07 Javascript
原生js仿淘宝网商品放大镜效果
2017/02/28 Javascript
Vue指令的钩子函数使用方法
2017/03/20 Javascript
Angular指令之restict匹配模式的详解
2017/07/27 Javascript
node.js 核心http模块,起一个服务器,返回一个页面的实例
2017/09/11 Javascript
解决npm安装Electron缓慢网络超时导致失败的问题
2018/02/06 Javascript
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
nodejs开发一个最简单的web服务器实例讲解
2020/01/02 NodeJs
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
Python常见文件操作的函数示例代码
2011/11/15 Python
Python的Bottle框架的一些使用技巧介绍
2015/04/08 Python
python实现的希尔排序算法实例
2015/07/01 Python
django 常用orm操作详解
2017/09/13 Python
对python中Json与object转化的方法详解
2018/12/31 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
python通过paramiko复制远程文件及文件目录到本地
2019/04/30 Python
python写入文件自动换行问题的方法
2019/07/05 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
python采集百度搜索结果带有特定URL的链接代码实例
2019/08/30 Python
Python实现ATM系统
2020/02/17 Python
django 解决扩展自带User表遇到的问题
2020/05/14 Python
CSS3中Transition动画属性用法详解
2016/07/04 HTML / CSS
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
农民致富事迹材料
2014/01/23 职场文书
优秀求职信范文分享
2014/01/26 职场文书
团结演讲稿范文
2014/05/23 职场文书
世界水日宣传活动总结
2015/02/09 职场文书
百万英镑观后感
2015/06/09 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
Nginx 负载均衡是什么以及该如何配置
2021/03/31 Servers
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS