vue 悬浮图标_vue实现可拖拽移动悬浮球

本文介绍了如何使用Vue实现一个全屏悬浮且可拖拽的元素,该元素在拖拽结束后会自动吸附到屏幕边缘,并且具有点击展开菜单功能。在拖拽过程中阻止页面滚动,菜单在拖拽时不会打开,且当元素接近屏幕底部时,若剩余高度不足,会自动吸附到屏幕底部。
摘要由CSDN通过智能技术生成

拖拽移动悬浮球

需求拆解

1.元素悬浮于全屏

2.元素可拖拽

3.元素拖拽结束后会吸附贴壁

4.元素单击唤出菜单

5.菜单展开时点击空白处关闭菜单

6.菜单不可拖拽

7.元素拖拽时菜单不打开

8.元素拖拽至接近底部时,若剩余高度不足以展开菜单则自动吸附至底部。

实现思路

如果适配移动端,则需加注touch事件

1.鼠标按下时

1.1.如果此时已打开菜单,则不做响应

1.2.未打开菜单,记录 按下状态为true 记录x y轴坐标

2.按下移动时 动态计算坐标 设置拖拽元素 style 控制位置 ;

2.1.判断拖拽区域 溢出时 归位判断;

2.2.拖拽时 阻止页面滑动

2.3.增加拖拽计数

3.鼠标抬起

3.1.修改 按下状态 为false

3.2.根据元素位置和容器高宽动态计算元素最后应该吸附位置

4.元素点击事件

4.1.拖拽计数与历史计数差小于10则执行点击事件

4.2.反之不执行

实现过程

:class="{'zlevelTop':mouseDownState}"

style="position: absolute;top: 0;height: 100%;width: 100%">

style="position: fixed;top: 0;left: 0;width: 100%;height: 100%;z-index: 998">

ref="actionMgr" :style="position" @mousedown="demo_down">

export default {

name: "homeDragbtn",

props: {

// 通过position来设置初始定位

position: {

type: Object,

default: function() {

return {

top: "32.25rem",

left: "0"

}

<
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值