vue实现移动端触屏拖拽功能
网络编程 2021-07-04 14:06www.168986.cn编程入门
这篇文章主要为大家详细介绍了vue实现移动端触屏拖拽功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
vue实现移动端可拖拽浮球,供大家参考,具体内容如下
1 创建一个div
<div class="floatball" id="floatball" @mousedown="down" @touchstart.s="down" @mousemove="move" @touchmove.s="move" @mouseup="end" @touchend.s="end" @click="showRewardDesc" :style="{: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; : 60px; right: 320px; border-radius: 50%; background-color: rgba(29, 157, 237,0.8); } </style>
3 给 div 附上事件
准备四个变量
1)、屏幕长
var screenHeight = window.screen.height
2)、屏幕宽
var screenWidth = window.screen.width
3)、初始触控点 距离 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.s="down" @mousemove="move" @touchmove.s="move" @mouseup="end" @touchend.s="end" :style="{:position.y+'px', left:position.x+'px'}"> 奖励规则 </div> </template> <script> // 鼠标位置和div的左上角位置 差值 var dx,dy var screenWidth = window.screen.width var screenHeight = window.screen.height export 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; : 60px; right: 320px; border-radius: 50%; background-color: rgba(29, 157, 237,0.8); } </style>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持狼蚁SEO。
上一篇:Vue左滑组件slider使用详解
下一篇:vue实现移动端拖动排序
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程