首页 > 其他分享 >小图标可以自由拖动

小图标可以自由拖动

时间:2024-10-22 11:43:19浏览次数:6  
标签:box const 拖动 自由 小图标 moveEvent onMouseMove document event

<div class="tubiao" @mousedown="startDrag" @touchstart="startDrag">
            <div :class="item.active == true ? 'tttACtive' : 'ttt'" v-for="item in tabLayout" :key="item.value"
                @click="tabLayChange(item)">{{ item.name }}</div>
        </div>


// 重置拖动状态
const isDragging = ref(false);
const dragStartTime = ref(0)

function startDrag(event) {
    event.preventDefault();
    isDragging.value = false;
    dragStartTime.value = Date.now();
    const box = event.target;
    const initialX = event.clientX || event.touches[0].clientX;
    const initialY = event.clientY || event.touches[0].clientY;
    const rect = box.getBoundingClientRect();
    const offsetX = initialX - rect.left;
    const offsetY = initialY - rect.top;

    const onm ouseMove = (moveEvent) => {
         isDragging.value = true;
        const moveX = moveEvent.clientX || moveEvent.touches[0].clientX;
        const moveY = moveEvent.clientY || moveEvent.touches[0].clientY;
        const newX = moveX - offsetX;
        const newY = moveY - offsetY;
        box.style.left = `${newX}px`;
        box.style.top = `${newY}px`;
        box.style.right = 'auto';
        box.style.bottom = 'auto';
    };

    const onm ouseUp = () => {
        const dragEndTime = Date.now();
        document.removeEventListener('mousemove', onm ouseMove);
        document.removeEventListener('mouseup', onm ouseUp);
        document.removeEventListener('touchmove', onm ouseMove);
        document.removeEventListener('touchend', onm ouseUp);

        // 检查拖动时间,如果拖动时间小于200毫秒,则认为是一次点击
        if (!isDragging.value && (dragEndTime - dragStartTime.value < 200)) {
            // open();
        }
    };

    document.addEventListener('mousemove', onm ouseMove);
    document.addEventListener('mouseup', onm ouseUp);
    document.addEventListener('touchmove', onm ouseMove);
    document.addEventListener('touchend', onm ouseUp);
}

.tubiao{
            width: 6rem;
            height: 6.5rem;
            // background: url("@/assets/bigScreen/u399.png") center no-repeat;
            // background-size: 100% 100%;
            background:#7996d4;
            border:1px solid #1ebcd8;
            position: absolute;
            bottom: 5.5625rem;
            right: 1.25rem;
            z-index: 9;
            cursor: pointer;
            touch-action: none;
            color:#fff;
            padding:8px;
            text-align: center;
            /* 禁用默认的触摸事件 */
}

标签:box,const,拖动,自由,小图标,moveEvent,onMouseMove,document,event
From: https://www.cnblogs.com/baozhengrui/p/18492259

相关文章

  • 微信小程序 自由衣柜系统
    目录项目介绍具体实现截图技术介绍设计方法和思路小程序框架以及目录结构介绍java类核心代码部分展示其他uniapp小程序题目推荐详细视频演示源码获取项目介绍系统主要包括系统首页,个人中心,用户管理,风格类型管理,穿搭圈管理,我的搭配管理,系统管理等功能,从而实现智能化......
  • 一个球从80m高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共
    一、思路解析每次落地后返回原高度的一半上——下,保持米数下——上,减半以此类推二、代码#定义ball=80米ball=80#定义反弹了多少米的参数zo_m=0#进入10次反弹foriinrange(1,11,1):zo_m+=ball#统计上反弹了多少米ball=(ball/2)......
  • 九宫格自由流转拼图游戏
    作者:狼哥团队:坚果派团队介绍:坚果派由坚果等人创建,团队拥有12个华为HDE带领热爱HarmonyOS/OpenHarmony的开发者,以及若干其他领域的三十余位万粉博主运营。专注于分享HarmonyOS/OpenHarmony、ArkUI-X、元服务、仓颉。团队成员聚集在北京,上海,南京,深圳,广州,宁夏等地,目前已开发鸿蒙原......
  • VMWare 安装与拖动文件到 Win7 虚拟机
    导读为了有一个纯净的低版本Windows环境用于测试软件的运行环境,决定使用虚拟机安装一个纯净版本的Windows7。本文记录VMwareWorkstationPro17.6的安装过程,创建一个Windows7系统的虚拟机,并解决无法往Windows7虚拟机拖动文件的问题。方便自己日后需要的时候快速安......
  • 【Matlab 六自由度机器人】笛卡尔空间规划和关节空间规划(附MATLAB建模代码)
    笛卡尔空间规划和关节空间规划近期更新前言正文1.笛卡尔空间规划特点:步骤:2.关节空间规划特点:步骤:3.两种方法的区别4.MATLAB代码:机械臂避障路径规划问题和解答4.1关节空间规划方法4.2笛卡尔空间规划方法4.3规划方法的比较5.路径规划优化5.1平滑性优化5.2速度......
  • 内外网文件传输一体机方案,让数据流动更自由!
    为了保护内部核心数据,大部分企业通常会采用专业的网络安全设备,如防火墙、网闸、隔离卡等实现内外网隔离,以确保隔离效果和网络安全性。网络隔离后,仍存在内外网文件传输的场景及需求。以下是一些常见的会实施内外网隔离的行业客户:1.金融机构:如银行、保险公司和证券交易所等。这些......
  • java计算机毕业设计大学生竞赛项目自由组队平台(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今高等教育体系中,大学生竞赛已成为培养学生创新思维、团队协作和实践能力的重要途径。然而,传统的竞赛组队方式往往受限于学生的人际交往圈,导致优......
  • Python闭包和保存自由变量
    1.闭包:用函数代替类术语闭包(closure)来自抽象代数。抽象代数里,一集元素称为在某个运算(操作)之下封闭,如果将该运算应用于这一集合中的元素,产出的仍然是该集合中的元素。然而在Python社区中还用术语“闭包”表述于此一个毫不相干的概念。注意我们文章中所称的闭包为Python中的闭包......
  • antv X6 全局禁用节点和边拖动,画布可以拖动
    项目有个需求,通过接口获取用户权限,限制用户拖动节点和边查阅文档和百度发现Graph可以配置interacting来限制节点和边的交互但是用户的权限通过接口获取,如何动态配置interacting是否为false1、节点的node.prop可以进行通信,但是需要遍历画布的所有节点,参考https://codesa......
  • 使用ffmpeg修复本地视频文件(mp4)播放时进度条无法拖动的问题
    右击视频文件查看属性,在详细信息页查看视频时长,显示为空,推测进度条无法拖动的原因是时间轴损坏于是采用了以下解决办法将视频分离出来,命名为video.mp4ffmpeg-i视频名称.mp4-map0:v-vcodeccopy-bsf:vh264_mp4toannexbvideo.mp4将音频分离出来,命名为audio.wavffm......