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
1. Install vue-cli npm i @vue/cli -g 2. Create a ...
When learning kubernetes, we need to practice in ...
Article Structure 1. Preparation 2. Install Java ...
1. System Configuration 1. Turn off sudo password...
Table of contents 1. CDN introduction 1.1 react (...
WebRTC, which stands for Web Real-Time Communicat...
Table of contents Tutorial Series 1. Backup strat...
Shtml and asp are similar. In files named shtml, s...
Table of contents Case 1: Case 2: Case 3: To summ...
When making a homepage such as a login page, you ...
Specific method: (Recommended tutorial: MySQL dat...
Reminder: Whether it is planning, designing, or de...
This article shares the specific code for WeChat ...
Table of contents forEach() (ES6) method map() (E...
Recently, when I was working on a conference heal...