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

Detailed steps for porting busybox to build a minimal root file system

Busybox: A Swiss Army knife filled with small com...

Differences and usage examples of for, for...in, for...of and forEach in JS

for loop Basic syntax format: for(initialize vari...

3 Tips You Must Know When Learning JavaScript

Table of contents 1. The magical extension operat...

mysql 8.0.15 winx64 decompression version graphic installation tutorial

Every time after installing the system, I have to...

How to reference external CSS files and iconfont in WeChat applet wxss

cause The way to import external files into a min...

JavaScript to implement a simple web calculator

background Since I was assigned to a new project ...

Install MySQL in Ubuntu 18.04 (Graphical Tutorial)

Tip: The following operations are all performed u...

Detailed description of common events and methods of html text

Event Description onactivate: Fired when the objec...

Introduction to the process of installing MySQL 8.0 in Linux environment

Table of contents Preface 1. Linux changes the yu...

The connection between JavaScript constructors and prototypes

Table of contents 1. Constructors and prototypes ...

Vue realizes adding watermark to uploaded pictures (upgraded version)

The vue project implements an upgraded version of...

Solve the problem of not finding NULL from set operation to mysql not like

An interesting discovery: There is a table with a...

A brief discussion on Linux signal mechanism

Table of contents 1. Signal List 1.1. Real-time s...

Introduction to the use of this in HTML tags

For example: Copy code The code is as follows: <...

js to achieve the complete steps of Chinese to Pinyin conversion

I used js to create a package for converting Chin...