首页 > 其他分享 >vue3 做个点击拖拽的的按钮

vue3 做个点击拖拽的的按钮

时间:2024-10-14 16:21:54浏览次数:1  
标签:const vue3 value isDragging window 按钮 position ref 拖拽

// 视图层
<div class="regularAI" ref="draggableDiv" :style="{ top: `${position.y}px`, left: `${position.x}px` }"> <span @mousedown="startDrag">{{ isDragging ? '拖拽中' : '点击拖拽' }}</span> </div>
 
// js代码
<script setup>
    import { ref } from 'vue'
    const draggableDiv = ref(null)
    const position = ref({ x: '99%', y: '99%' })
    const isDragging = ref(false)

    const startDrag = (e) => {
        isDragging.value = true
        const startX = e.clientX - draggableDiv.value.getBoundingClientRect().left
        const startY = e.clientY - draggableDiv.value.getBoundingClientRect().top

        const onm ouseMove = (e) => {
            if (!isDragging.value) return
            position.value.x = e.clientX - startX
            position.value.y = e.clientY - startY
        }

        const onm ouseUp = () => {
            isDragging.value = false
            window.removeEventListener('mousemove', onm ouseMove)
            window.removeEventListener('mouseup', onm ouseUp)
        }

        window.addEventListener('mousemove', onm ouseMove)
        window.addEventListener('mouseup', onm ouseUp)
    }
</script>

样式

	.regularAI {
		position: fixed;
		right: 1%;
		bottom: 1%;
		z-index: 999;
		width: 60px;
		span {
			display: block;
			text-align: center;
			cursor: pointer;
		}
	}

标签:const,vue3,value,isDragging,window,按钮,position,ref,拖拽
From: https://www.cnblogs.com/aowu666/p/18464465

相关文章

  • adminPage-vue3依赖 v1.2.0新增组件 DetailsModule说明文档
    adminPage-vue3依赖v1.2.0新增组件DetailsModule说明文档引入思路介绍DetailsModuleAPI汇总属性插槽自定义对象config(array<object\>/object类型)config.list(array<object\>类型)使用基础使用范例config-titleconfig-moduleKeyconfig-listconfig-list-slotNamec......
  • 看不懂来打我!让性能提升56%的Vue3.5响应式重构
    前言在Vue3.5版本中最大的改动就是响应式重构,重构后性能竟然炸裂的提升了56%。之所以重构后的响应式性能提升幅度有这么大,主要还是归功于:双向链表和版本计数。这篇文章我们来讲讲使用双向链表后,Vue内部是如何实现依赖收集和依赖触发的。搞懂了这个之后你就能掌握Vue3.5重构后的响......
  • vue-cropper图片裁剪(vue2与vue3)
    在项目中,前端开发经常会遇到有图片上传的需求,而别人的组件大多都满足不了当下产品的需求,这是往往我们得去依靠组件自己自定义一个项目通用的裁剪组件一、vue-cropper安装依赖:vue2:npminstallvue-cropper 或 yarnaddvue-croppervue3:npminstallvue-cropper@next 或......
  • [vue3 JavaScript CSS]实现电商网站商品预览,图片放大镜功能
    da效果预览:当鼠标浮在图片上时,灰色小框跟随鼠标运动。右侧大图显示。灰色框不会跑出图片,鼠标移动,右侧大图相应跟随移动。实现思路在实现前,我们想梳理一下我们要实现什么功能灰色框跟随鼠标移动,注意处理边界情况当鼠标进入时右侧大图出现,鼠标移出时右侧大图消失鼠标向左......
  • vue3中监视 Reactive对象中的属性
      watch 的第一个参数可以是不同形式的“数据源”:它可以是一个ref(包括计算属性)、一个响应式对象、一个 getter函数、或多个数据源组成的数组一、框架:<template><divclass="divBox"><h2>姓名:{{person.name}}</h2><h2>年龄:{{person.age}}</h2>......
  • vue3 路由文件配置
    //通过模板路由配置import{createRouter,createWebHistory}from"vue-router";//创建路由器constroutes=[//登录路由{path:"/login",component:()=>import("../views/login/index.vue"),name:"......
  • 利用Vue3的axios+Python的flask实现前后端交互功能
    1功能实现1.1功能在网页中输入两个数字后,点击计算按钮在线计算(注意不是在浏览器端)获得两数之和。1.2思路前端使用vue3的axios向服务器发送post请求,利用flask框架使python服务器返回计算后的数值,赋给前端的变量,最终在浏览器上显示。2前端部分:2.1html<div><inputv-mod......
  • Vue3组件通讯方式
    1.父子传参个人概括:《  其实vue3的很多方法都跟vue2相似也几乎可以说是一样只不过调用方式不同,父子传参,之前父传子子接受用的是props现在呢换成了defineProps,跟props用法差不多里面一个数据和它的类型然后就调用就可以了》importZifrom'./views/Index.vue'  ......
  • 推荐一款支持Vue3的管理系统模版:Vue-Vben-Admin
    近年来,随着前端技术的飞速发展,各类后台管理系统框架层出不穷。Vue作为热门的前端框架,也有许多优秀的后台模板涌现。而Vue-Vben-Admin,凭借其高效、灵活的架构设计和完善的功能体系,成为了许多前端开发者的不二选择。其GithubStar达到了24K之多,可见其受欢迎程度。本文将详细介绍V......
  • vue3--vite环境变量的配置
    在开发环境、测试环境、生产环境需要请求不同的接口,对应不同的数据。因此,配置环境变量也尤为重要第一:为项目根目录开发、测试、生成(也可以加入预发布)环境创建.env文件.env.development.env.production.env.test第二:配置数据#变量必须以VITE_为前缀才能暴露给外部读取......