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节点知识
Jan 31 Javascript
让AJAX不依赖后端接口实现方案
Dec 03 Javascript
IE中的File域无法清空使用jQuery重设File域
Apr 24 Javascript
javascript实现实时输出当前的时间
Apr 27 Javascript
JavaScript实现对下拉列表值进行排序的方法
Jul 15 Javascript
js实现登陆遮罩效果的方法
Jul 28 Javascript
Vue 中axios配置实例详解
Jul 27 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
Jun 04 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
Dec 12 Javascript
vue中的过滤器及其时间格式化问题
Apr 09 Javascript
微信小程序开发打开另一个小程序的实现方法
May 17 Javascript
关于element-ui表单中限制输入纯数字的解决方式
Sep 08 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
xml+php动态载入与分页
2006/10/09 PHP
php 图片上传类代码
2009/07/17 PHP
php中serialize序列化与json性能测试的示例分析
2013/04/27 PHP
解析VS2010利用VS.PHP插件调试PHP的方法
2013/07/19 PHP
smarty模板中拼接字符串的方法
2014/02/14 PHP
PHP提示Cannot modify header information - headers already sent by解决方法
2014/09/22 PHP
改版了网上的一个js操作userdata
2007/04/27 Javascript
javascript中字符串拼接需注意的问题
2010/07/13 Javascript
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
JS数组的赋值介绍
2014/03/10 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
2015/09/27 Javascript
JavaScript中的继承之类继承
2016/05/01 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
vue双向数据绑定原理探究(附demo)
2017/01/17 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
js实现鼠标滑动到某个div禁止滚动
2020/09/17 Javascript
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
给Python初学者的一些编程技巧
2015/04/03 Python
Django如何实现上传图片功能
2019/08/16 Python
使用python 的matplotlib 画轨道实例
2020/01/19 Python
python interpolate插值实例
2020/07/06 Python
Python Selenium XPath根据文本内容查找元素的方法
2020/12/07 Python
CSS3改变浏览器滚动条样式
2019/01/04 HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
毕业生简单求职信
2013/11/19 职场文书
初中三好学生事迹材料
2014/01/13 职场文书
公司薪酬管理制度
2014/01/31 职场文书
党员一句话承诺大全
2014/03/28 职场文书
超市创意活动方案
2014/08/15 职场文书
居住证明范文
2015/06/17 职场文书
狂人日记读书笔记
2015/06/30 职场文书
公司档案管理制度
2015/08/05 职场文书
如何利用map实现Nginx允许多个域名跨域
2021/03/31 Servers
Java使用HttpClient实现文件下载
2022/08/14 Java/Android