Vue implements a movable floating button

Vue implements a movable floating button

This article example shares the specific code of Vue to realize the floating button that can be moved anywhere for your reference. The specific content is as follows

1.html code

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

2. Define in data

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

3.js code

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; //Screen width minus control width let height = window.innerHeight - this.$refs.fu.offsetHeight; //Screen height minus control height 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";
  // }
  //Prevent the page from sliding by default document.addEventListener(
   "touchmove",
   function () {
   event.preventDefault();
   },
   false
  );
  }
 },
 //Function when the mouse is released end() {
  this.flags = false;
 },
 onClick() {
  //Here I am using this as a subcomponent 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>

The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM.

You may also be interested in:
  • Vue realizes the floating window effect on mobile terminal
  • Vue suspended draggable floating button example code
  • Example code of element-ui table thumbnail floating zoom function in vue
  • Vue implements a floating/hidden system menu in the upper right corner of the page
  • Vue sample code to achieve the effect of displaying a floating box when the mouse passes over the text
  • Vue.js mouse hover change picture function
  • vue+jquery+lodash realizes the top floating fixed effect when sliding
  • Vue implements the code of floating ball on the side of PC
  • Vue implements super long text interception and floating box prompt
  • Vue realizes the floating ball effect

<<:  How to disable ads in the terminal welcome message in Ubuntu Server

>>:  Error mysql Table 'performance_schema...Solution

Recommend

How to use JSZip compression in CocosCreator

CocosCreator version: 2.4.2 Practical project app...

MySQL tutorial DML data manipulation language example detailed explanation

Table of contents 1. Data Manipulation Language (...

The latest 36 high-quality free English fonts shared

01. Infinity Font Download 02. Banda Font Download...

Free tool to verify that HTML, CSS and RSS feeds are correct

One trick for dealing with this type of error is t...

How does Vue track data changes?

Table of contents background example Misconceptio...

Detailed explanation of the principle and usage of MySQL stored procedures

This article uses examples to explain the princip...

CentOS6.8 uses cmake to install MySQL5.7.18

Referring to the online information, I used cmake...

Summary of common tool functions necessary for front-end development

1. Time formatting and other methods It is recomm...

Vue implements tab navigation bar and supports left and right sliding function

This article mainly introduces: using Vue to impl...

The easiest way to debug stored procedures in Mysql

A colleague once told me to use a temporary table...

Install Docker for Windows on Windows 10 Home Edition

0. Background Hardware: Xiaomi Notebook Air 13/In...

MySQL query example explanation through instantiated object parameters

This article will introduce how to query data in ...

How to build lnmp environment in docker

Create a project directory mkdir php Create the f...