首页 > 编程 > JavaScript > 正文

vue实现移动端悬浮窗效果

2019-11-19 12:26:00
字体:
来源:转载
供稿:网友

本文讲述,在使用VUE的移动端实现类似于iPhone的悬浮窗的效果。

相关知识点

touchstart 当在屏幕上按下手指时触发

touchmove 当在屏幕上移动手指时触发

touchend 当在屏幕上抬起手指时触发
mousedown mousemove mouseup对应的是PC端的事件

touchcancel 当一些更高级别的事件发生的时候(如电话接入或者弹出信息)会取消当前的touch操作,即触发touchcancel。一般会在touchcancel时暂停游戏、存档等操作。

效果图


实现步骤

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逻辑,基本上,问题不大。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表