时间:2021-05-26
vue实现移动端可拖拽浮球,供大家参考,具体内容如下
1 首先创建一个div
<div class="floatball" id="floatball" @mousedown="down" @touchstart.stop="down" @mousemove="move" @touchmove.stop="move" @mouseup="end" @touchend.stop="end" @click="showRewardDesc" :style="{top:position.y+'px', left:position.x+'px'}"> 奖励规则</div>2 给 div 附上样式
<style> .floatball{ color:white; height:50px; width: 50px; padding: 5px; z-index: 990; position: fixed; top: 60px; right: 320px; border-radius: 50%; background-color: rgba(29, 157, 237,0.8); }</style>3 给 div 附上事件
准备四个变量
1)、屏幕长
var screenHeight = window.screen.height2)、屏幕宽
var screenWidth = window.screen.width3)、初始触控点 距离 div 左上角的横向距离 dx
4)、初始触控点 距离 div 左上角的竖向距离 dy
在开始拖拽时,计算出鼠标点(初始触控点)和 div左上角顶点的距离
down(event){ this.flags = true; var touch ; if(event.touches){ touch = event.touches[0]; }else { touch = event; } console.log('鼠标点所在位置', touch.clientX,touch.clientY) console.log('div左上角位置', event.target.offsetTop,event.target.offsetLeft) dx = touch.clientX - event.target.offsetLeft dy = touch.clientY - event.target.offsetTop},拖拽进行时,将触控点的位置赋值给 div
// 定位滑块的位置this.position.x = touch.clientX - dx;this.position.y = touch.clientY - dy;// 限制滑块超出页面// console.log('屏幕大小', screenWidth, screenHeight)if (this.position.x < 0) { this.position.x = 0} else if (this.position.x > screenWidth - touch.target.clientWidth) { this.position.x = screenWidth - touch.target.clientWidth}if (this.position.y < 0) { this.position.y = 0} else if (this.position.y > screenHeight - touch.target.clientHeight) { this.position.y = screenHeight - touch.target.clientHeight}拖拽结束
//鼠标释放时候的函数end(){ console.log('end') this.flags = false;},全部代码
<template> <div class="floatball" id="floatball" @mousedown="down" @touchstart.stop="down" @mousemove="move" @touchmove.stop="move" @mouseup="end" @touchend.stop="end" :style="{top:position.y+'px', left:position.x+'px'}"> 奖励规则 </div></template><script>// 鼠标位置和div的左上角位置 差值var dx,dyvar screenWidth = window.screen.widthvar screenHeight = window.screen.heightexport default { data() { return { flags: false, position: { x: 320, y: 60 }, } }, methods: { // 实现移动端拖拽 down(event){ this.flags = true; var touch ; if(event.touches){ touch = event.touches[0]; }else { touch = event; } console.log('鼠标点所在位置', touch.clientX,touch.clientY) console.log('div左上角位置', event.target.offsetTop,event.target.offsetLeft) dx = touch.clientX - event.target.offsetLeft dy = touch.clientY - event.target.offsetTop }, move() { if (this.flags) { var touch ; if (event.touches) { touch = event.touches[0]; } else { touch = event; } // 定位滑块的位置 this.position.x = touch.clientX - dx; this.position.y = touch.clientY - dy; // 限制滑块超出页面 // console.log('屏幕大小', screenWidth, screenHeight ) if (this.position.x < 0) { this.position.x = 0 } else if (this.position.x > screenWidth - touch.target.clientWidth) { this.position.x = screenWidth - touch.target.clientWidth } if (this.position.y < 0) { this.position.y = 0 } else if (this.position.y > screenHeight - touch.target.clientHeight) { this.position.y = screenHeight - touch.target.clientHeight } //阻止页面的滑动默认事件 document.addEventListener("touchmove",function(){ event.preventDefault(); },false); } }, //鼠标释放时候的函数 end(){ console.log('end') this.flags = false; }, } }</script><style> .floatball{ color:white; height:50px; width: 50px; padding: 5px; z-index: 990; position: fixed; top: 60px; right: 320px; border-radius: 50%; background-color: rgba(29, 157, 237,0.8); }</style>以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
vue移动端实现div拖拽移动,供大家参考,具体内容如下本文讲述,在使用VUE的移动端实现类似于iPhone的悬浮窗的效果。相关知识点touchstart当在屏
本文实例为大家分享了javascript实现移动端触屏拖拽的具体代码,供大家参考,具体内容如下HTML:CSS:*{margin:0;padding:0;}ht
本文是分享了javascript实现移动端上的触屏拖拽功能,具体内容如下效果图:实现代码:body{height:2000px;}#block{width:20
发挥你的想象,CSS也能实现拖拽效果。一、拖拽效果示例这是移动端很常见的一个效果,可以按住拖来拖去,比如下面的起点中文网[1]触屏版:这类效果用JS可以很容易实
本文实例为大家分享了Vue实现移动端拖拽交换位置的具体代码,供大家参考,具体内容如下点击图片删除,拖拽可更改顺序,共4张删除该图片?删除取消exportdefa