Vue3实现div拖拽改变宽高

news2024/11/28 22:54:39

效果图如下:

底部拖拽按钮点击拖拽可自定义父容器的宽高

<template>
    <div id="business_plane">
        <div class="business_plane" ref="container">
            <div class="darg_tool">
                <el-icon class="drag_H" title="点击拖动调整高度" @mousedown="onTdMousedown($event)"
                    @mouseleave="onTdMouseleave($event)">
                    <DCaret />
                </el-icon>
            </div>
        </div>
    </div>
</template>

<script lang="ts" setup>
import { shallowRef, onMounted, nextTick, ref, reactive } from 'vue'
import { CircleClose,DCaret } from '@element-plus/icons-vue'

const domInfo = reactive({
    baseW: 0,
    baseH: 0,
    searchToolMT: 10,
});

const container = ref<HTMLElement>();

const updateTarget = (event: MouseEvent) => {
    if (!container.value) {
        console.error('drag--- 请传入一个HTMLElement节点');
        return;
    }
    // movementX/movementY
    // 两个鼠标移动事件间隔时间中当中鼠标移动的相对坐标;
    domInfo.baseW = container.value.clientWidth;
    domInfo.baseH = container.value.clientHeight;
    domInfo.searchToolMT = document.getElementById("searchTool")!.clientHeight - 10;
    //container.value!.style.width = `${domInfo.baseW + event.movementX}px`;
    if (parseInt(`${domInfo.baseH + event.movementY}`) < 550) {
        container.value!.style.height = '550px';
        document.getElementById("searchTool")!.style.marginTop = "10px"
        return
    }
    container.value!.style.height = `${domInfo.baseH + event.movementY}px`;
    document.getElementById("searchTool")!.style.marginTop = `${domInfo.searchToolMT + event.movementY}px`;
    document.getElementById("tree")!.style.height = `${domInfo.baseH + event.movementY - 110}px`;
};
// change 回调方式
const onTdMousedown = (e: MouseEvent) => {
    window.addEventListener('mousemove', updateTarget);
    window.onmouseup = function () {
        window.onmouseup = null;
        window.removeEventListener('mousemove', updateTarget);
    };
};

const onTdMouseleave = (e: MouseEvent) => {
    window.removeEventListener('mousemove', updateTarget);
}

</script>

<style lang="less" scoped>
#business_plane {
    position: absolute;
    top: 80px;
    right: 35px;
    z-index: 999;
}

.business_plane {
    position: relative;
    color: #fff;
    width: 300px;
    height: 550px;
    background-image: url(../../assets/images/modal_bg1.png);
    background-size: 100% 100%;
}

.darg_tool {
    width: 300px;
    height: 50px;
    display: flex;
    justify-content: center;
}

.drag_H {
    position: absolute;
    width: 30px;
    height: 30px;
    bottom: 0px;
    font-size: 20px;
    z-index: 999;
    border-radius: inherit;
    cursor: move;
}

.container {
    width: 100px;
    height: 100px;
    background-color: #ccc;
    position: relative;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1069754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaEE初阶学习:HTTP协议和Tomcat

1. HTTP协议 HTTP协议是一个非常广泛的应用层协议~~ 应用层协议 —> TCP IP 协议栈 应用层 —> 关注数据怎么使用~ 传输层 —> 关注的是整个传输的起点和终点 网络层 —> 地址管理 路由选择 数据链路层 —> 相邻节点之间的数据转发 物理层 —> 基础设置,硬…

Rocky(centos)安装nginx并设置开机自启

一、安装nginx 1、安装依赖 yum install -y gcc-c pcre pcre-devel zlib zlib-devel openssl openssl-devel 2、去官网下载最新的稳定版nginx nginx: downloadhttp://nginx.org/en/download.html 3、将下载后的nginx上传至/usr/local下 或者执行 #2023-10-8更新 cd /usr/…

我在 NPM 发布了新包: con-colors

链接地址&#xff1a;npmjs.com con-colors 安装依赖 yarn add con-colors使用 导入&#xff1a; import { print } from "con-colors";使用&#xff1a; print.succ("成功的消息"); print.err("失败的消息")例子&#xff1a; import { p…

与诈蟹的初次邂逅,你中招了没

中秋国庆双节大家都过得怎么样&#xff1f;有没有吃到螃蟹&#xff1f;不管你们吃没吃到&#xff0c;反正东东是吃到螃蟹...的瓜了&#xff0c;四舍五入一下也算是吃到了吧。 这不节后上班第一天&#xff0c;同事们就已经开始互相问候关于是否收到蟹卡的情况&#xff0c;一开始…

vmware一键启动虚拟机系统脚本

bat脚本 "D:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" -T ws start "D:\Program Files (x86)\Ginkgo7000\C7-10.10.10.111\CentOS 7-NAS-6.vmx" 脚本内容说明 "D:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe"…

一般香港服务器带宽选多大够用?(带宽计算方法)

​  在海外IDC市场份额中&#xff0c;香港服务器依托自身优越的服务器资源条件&#xff0c;在各个行业中发挥的重要作用。但是&#xff0c;不同业务对网络带宽的要求各不相同&#xff0c;弄清楚如何计算带宽需求对于确保业务平稳运行至关重要&#xff0c;最好从一开始就使用正…

研发质量管理体系

研发质量管理体系的脉络是怎样的&#xff1f;如何建立适合组织发展的研发质量管理体系&#xff1f;质量管理的核心是什么&#xff1f;一些思考&#xff0c;一些线索&#xff0c;欢迎朋友们一起探讨、碰撞。

Tensorflow入门之 Hello World

Tensorflow入门之 Hello World 简介 Tensorflow 是 Google 开源的深度学习框架&#xff0c;来自于 Google Brain 研究项目&#xff0c;在 Google 第一代分布式机器学习框架 DistBelief 的基础上发展起来。 Tensorflow 的官方网址 http://www.tensorflow.org Tensorflow 的 G…

基于Spring Boot和WebSocket的在线聊天室测试

1.测试目标 设计可靠且全面的自动化测试用例&#xff0c;以覆盖项目的核心功能以及不同的使用场景。通过有效的测试策略和测试工具选择&#xff0c;提高测试效率&#xff0c;减少手动测试所需的工作量&#xff0c;从而加速项目的交付周期。保障持续集成与持续交付流程的顺利进…

保护数据安全:防病毒防木马的重要性与策略

随着科技的进步&#xff0c;我们的生活已经离不开互联网。网络为我们的工作、学习、娱乐带来了极大的便利&#xff0c;但同时也带来了新的挑战——数据安全问题。病毒、木马等恶意软件&#xff0c;是威胁数据安全的主要因素。因此&#xff0c;我们必须采取有效的防病毒防木马措…

react中预览excel表格

查了很多资料&#xff0c;很多插件&#xff0c;有很多也用不了&#xff0c;最后试了xlsx这个插件&#xff0c;可以使用。 话不多少了&#xff0c;直接放代码吧&#xff1a; 1.代码实现 fetch(API).then((res: any) > {res?.blob().then((r: any) > {const reader ne…

论文降重:我从论文重复率75%降到4.5%,顺利毕业

去年我在撰写毕业论文的过程中遇到了一个巨大的挑战&#xff0c;那就是论文的重复率过高&#xff0c;高达75%。这个问题严重威胁着我的学位和未来职业发展&#xff0c;因此我决定付出一切努力来解决这个难题。在花费大量时间和努力后&#xff0c;并借助智元兔AI写作助手(http:/…

【高效办公_PDF】如何快速批量整合多个PDF???---Python方法

高效办公 PDF 如何快速批量整合多个PDF??? 今日方法:如何使用Python代码实现合并当前目录PDF文件 市场上当然有许许多多的形形色色的软件可以进行PDF整合等操作; 那么我们用代码(r如:python怎么实现高效办公呢? ) # [注] 在合并过程中,程序是按照所在文件夹的存放顺…

Javascript 笔记:函数调用与函数上下文

在 JavaScript 中&#xff0c;函数上下文通常指的是函数在执行时的当前对象的引用&#xff0c;这通常用 this 关键字表示。this 关键字在不同的执行上下文中可能引用到不同的对象。 1 全局上下文 当 this 关键字用在全局上下文&#xff08;不在任何函数内部&#xff09;&#…

【微客云】外卖霸王餐项目来啦 免费提供霸王餐系统

它终于出来啦&#xff01;微客云分站终于正式发布&#xff01;&#xff01; 先前的文章就已经预告过微客云要搞分站&#xff0c;很多小伙伴们一直在问老许分站什么时候出来&#xff0c;想加盟分站怎么做&#xff1f;有什么条件&#xff1f;本来是不打算这么快正式官宣分站的&am…

[网鼎杯 2020 白虎组]PicDown python反弹shell proc/self目录的信息

[网鼎杯 2020 白虎组]PicDown - 知乎 这里确实完全不会 第一次遇到一个只有文件读取思路的题目 这里也确实说明还是要学学一些其他的东西了 首先打开环境 只存在一个框框 我们通过 目录扫描 抓包 注入 发现没有用 我们测试能不能任意文件读取 ?url../../../../etc/passwd …

css图形化理解--扭曲函数skew()

transform: skewX(30deg);transform: skewY(45deg);transform: skew(30deg,45deg);transform: skewX(angleX);transform: skewY(angleY);transform: skew(angleX,angleY); 是CSS中的一个2D变换方法&#xff0c;它用于对元素沿X轴、Y轴进行倾斜变换。其中&#xff0c;angle表示倾…

【物联网】Arduino+ESP8266物联网开发(二):控制发光二极管 按钮开关控制开关灯

【物联网】ArduinoESP8266物联网开发(一)&#xff1a;开发环境搭建 安装Arduino和驱动 2.ESP8266基础应用 学习过程中会用到的基础引脚如下。开发板提供3V电源&#xff0c;一般传感器工作电压都是3V&#xff0c;可通过开发板供电。如果设备需要的电压超过3V&#xff0c;如水泵…

electron之进程间通信

Electron进程间通信 使用electron编写程序时经常遇到下面这种场景&#xff1a; 当用户点击一个按钮时&#xff0c;需要将页面输入的信息保存到本地电脑上&#xff1b; 或者是点击菜单时&#xff0c;需要页面窗口做出响应。 用户点击的按钮和窗口展示的内容是运行在渲染进程中&…

【Java 进阶篇】HTML链接标签详解

HTML链接标签是构建网页中超链接的重要元素之一&#xff0c;允许您在不同的网页之间或同一网页内创建链接。本篇博客将详细介绍HTML链接标签&#xff0c;包括超链接的类型、属性、用法和示例代码&#xff0c;旨在帮助基础小白更好地理解和使用链接标签。 1. 超链接的基本概念 …