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:
|
<<: How to disable ads in the terminal welcome message in Ubuntu Server
>>: Error mysql Table 'performance_schema...Solution
Busybox: A Swiss Army knife filled with small com...
for loop Basic syntax format: for(initialize vari...
Table of contents 1. The magical extension operat...
Every time after installing the system, I have to...
cause The way to import external files into a min...
background Since I was assigned to a new project ...
Tip: The following operations are all performed u...
Event Description onactivate: Fired when the objec...
Table of contents Preface 1. Linux changes the yu...
Table of contents 1. Constructors and prototypes ...
The vue project implements an upgraded version of...
An interesting discovery: There is a table with a...
Table of contents 1. Signal List 1.1. Real-time s...
For example: Copy code The code is as follows: <...
I used js to create a package for converting Chin...