vue实现可移动的悬浮按钮


Posted in Vue.js onMarch 04, 2021

本文实例为大家分享了vue实现可随处移动悬浮按钮的具体代码,供大家参考,具体内容如下

1.html代码

<div
 class="callback float"
 @click="onClick"
 @mousedown="down"
 @touchstart="down"
 @mousemove="move"
 @touchmove="move"
 @mouseup="end"
 @touchend="end"
 ref="fu"
 >
 <!-- <p @click="callback">返回</p> -->
 <img @click="callback" src="@/assets/images/callbs.jpg" alt />
</div>

2.再data中定义

data() {
 return {
  isLoading: false,
  flags: false, //控制使用
  position: {
  x: 0,
  y: 0,
  },
  nx: "",
  ny: "",
  dx: "",
  dy: "",
  xPum: "",
  yPum: "",
 };
 },

3.js代码

methods: {
 callback() {
  this.$router.go(-1);
 },
 onRefresh() {
  // window.location.reload();
  setTimeout((res) => {
  console.log(res);
  this.isLoading = false;
  }, 1000);
 },
 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 = this.$refs.fu.offsetLeft;
  this.dy = this.$refs.fu.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;
  let width = window.innerWidth - this.$refs.fu.offsetWidth; //屏幕宽度减去自身控件宽度
  let height = window.innerHeight - this.$refs.fu.offsetHeight; //屏幕高度减去自身控件高度
  this.xPum < 0 && (this.xPum = 0);
  this.yPum < 0 && (this.yPum = 0);
  this.xPum > width && (this.xPum = width);
  this.yPum > height && (this.yPum = height);
  // if (this.xPum >= 0 && this.yPum >= 0 && this.xPum<= width &&this.yPum<= height) {
  this.$refs.fu.style.left = this.xPum + "px";
  this.$refs.fu.style.top = this.yPum + "px";
  // }
  //阻止页面的滑动默认事件
  document.addEventListener(
   "touchmove",
   function () {
   event.preventDefault();
   },
   false
  );
  }
 },
 //鼠标释放时候的函数
 end() {
  this.flags = false;
 },
 onClick() {
  //在这里我是作为子组件来使用的
  this.$emit("click");
 },
 },

4.style样式

<style scoped>
.callback p {
 font-size: 16px;
 color: #fff;
 background: rgba(56, 57, 58, 0.5);
 border-radius: 50%;
 text-align: center;
 width: 50px;
 height: 50px;
 line-height: 50px;
 font-family: PingFang SC;
 font-weight: 600;
 box-shadow: 0 0 10px #fff;
}
.callback img {
 display: block;
 width: 50px;
 height: 50px;
 box-shadow: 0 0 10px rgb(133, 129, 129);
 border-radius: 50%;
 background: #fff;
}
.callback {
 position: fixed;
 top: 40px;
 left: 20px;
 z-index: 99999;
}
.float {
 position: fixed;
 right: 20px;
 top: 60%;
 touch-action: none;
 text-align: center;
 width: 50px;
 height: 50px;
 border-radius: 24px;
 line-height: 48px;
 color: white;
}
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
vue实现下载文件流完整前后端代码
Nov 17 Vue.js
vue打开其他项目页面并传入数据详解
Nov 25 Vue.js
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
Dec 15 Vue.js
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 Vue.js
vue实现简易计算器功能
Jan 20 Vue.js
vue 根据选择的月份动态展示日期对应的星期几
Feb 06 Vue.js
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
Feb 11 Vue.js
Vue和Flask通信的实现
May 19 Vue.js
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
vue中 this.$set的使用详解
Nov 17 Vue.js
VUE使用draggable实现组件拖拽
Apr 06 Vue.js
vue中axios封装使用的完整教程
Mar 03 #Vue.js
详解Vue.js 可拖放文本框组件的使用
Mar 03 #Vue.js
详解vue3中组件的非兼容变更
Mar 03 #Vue.js
vite2.0+vue3移动端项目实战详解
Mar 03 #Vue.js
Vue多选列表组件深入详解
Mar 02 #Vue.js
Vue2.x-使用防抖以及节流的示例
Mar 02 #Vue.js
Vue中避免滥用this去读取data中数据
Mar 02 #Vue.js
You might like
使PHP自定义函数返回多个值
2006/11/26 PHP
php 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
php输出图像的方法实例分析
2017/02/16 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
PHP校验15位和18位身份证号的类封装
2018/11/07 PHP
实现连缀调用的map方法(prototype)
2009/08/05 Javascript
javascript 面向对象编程  function是方法(函数)
2009/09/17 Javascript
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
javascript获取鼠标点击元素对象(示例代码)
2013/12/20 Javascript
JavaScript遍历table表格中的某行某列并打印其值
2014/07/08 Javascript
原生js实现移动开发轮播图、相册滑动特效
2015/04/17 Javascript
3种js实现string的substring方法
2015/11/09 Javascript
JS实现鼠标移上去显示图片或微信二维码
2016/12/14 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
vue弹窗组件使用方法
2018/04/28 Javascript
javascript少儿编程关于返回值的函数内容
2018/05/27 Javascript
js+SVG实现动态时钟效果
2018/07/14 Javascript
Vue实现base64编码图片间的切换功能
2019/12/04 Javascript
Vue组件通信入门之Provide和Inject机制
2019/12/29 Javascript
通过JS判断网页是否为手机打开
2020/10/28 Javascript
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
详解使用 pyenv 管理多个版本 python 环境
2017/10/19 Python
利用Python循环(包括while&amp;for)各种打印九九乘法表的实例
2017/11/06 Python
[原创]教女朋友学Python(一)运行环境搭建
2017/11/29 Python
分享6个隐藏的python功能
2017/12/07 Python
Python numpy 常用函数总结
2017/12/07 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
应届生.NET方向面试题
2015/05/23 面试题
乡镇计划生育工作汇报
2014/10/28 职场文书
2015大学生党员自我评价范文
2015/03/03 职场文书
想要创业,那么你做好准备了吗?
2019/07/01 职场文书
速龙x4-860k处理器相当于i几
2022/04/20 数码科技