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

vue-cli4.5.x quickly builds a project

1. Install vue-cli npm i @vue/cli -g 2. Create a ...

How to build a standardized vmware image for kubernetes under rancher

When learning kubernetes, we need to practice in ...

Linux system (Centos6.5 and above) installation jdk tutorial analysis

Article Structure 1. Preparation 2. Install Java ...

Ubuntu 20.04 Best Configuration Guide (Newbie Essential)

1. System Configuration 1. Turn off sudo password...

A brief introduction to React

Table of contents 1. CDN introduction 1.1 react (...

MySQL Series 12 Backup and Recovery

Table of contents Tutorial Series 1. Backup strat...

The difference between shtml and html

Shtml and asp are similar. In files named shtml, s...

Several situations that cause MySQL to perform a full table scan

Table of contents Case 1: Case 2: Case 3: To summ...

CSS realizes the realization of background image screen adaptation

When making a homepage such as a login page, you ...

How to query whether the mysql table is locked

Specific method: (Recommended tutorial: MySQL dat...

Website Design Experience Summary of Common Mistakes in Website Construction

Reminder: Whether it is planning, designing, or de...

WeChat applet implements waterfall flow paging scrolling loading

This article shares the specific code for WeChat ...

Implementation steps of vue-element-admin to build a backend management system

Recently, when I was working on a conference heal...