JavaScript 在vue页面下实现鼠标拖拽div改变其大小,适用于鹰眼地图,街景地图等。

Vue元素拖拽缩放插件实战:vue-drag-resize详细实现与应用 自定义边界内的元素</div> 阅读详情

首先看效果,如图,鼠标悬浮在地图的右上角小框中时,提示“拖动调整大小”,可以给小框加个好看的图标。点击可以进行拖拽。

基于上一篇博客:https://blog.youkuaiyun.com/acoolgiser/article/details/84866426  实现。

代码:

<template>
     <div id="eagleMapContainer" title="">
            <div id="eagleMap">
                <l-map>
                    
                </l-map>
            </div>
            <div id="tz" @mousedown="dragEagle">
                <div title="拖动调整大小" id="move_tz"></div>
            </div>
       </div>
</template>

<script>

    export default {
        name: "eagleMap",
        components: {
            
        },

        data () {  /*定义data property的地方*/
            return {
               
            }
        },  /*end of data()*/

        methods: {
            dragEagle:function(e){
                var targetDiv= document.getElementById('eagleMapContainer'); //e.target.parentNode.parentNode;.children[0]

                //得到点击时该地图容器的宽高:
                var targetDivWidth=targetDiv.offsetWidth;
                var targetDivHeight=targetDiv.offsetHeight;

                var startX=e.clientX;
                var startY=e.clientY;

                var _this=this;

                document.onmousemove=function(e){
                    console.log('move');
                    e.preventDefault();
                    //得到鼠标拖动的宽高距离:取绝对值
                    var distX=Math.abs(e.clientX-startX);
                    var distY=Math.abs(e.clientY-startY);                  

                    //往右上方拖动:
                    if(e.clientX > startX && e.clientY < startY){
                        targetDiv.style.width=targetDivWidth+distX+'px';
                        targetDiv.style.height=targetDivHeight+distY+'px';
                    }
                    //往左下方拖动:
                    if (e.clientX < startX && e.clientY > startY) {
                        targetDiv.style.width=(targetDivWidth-distX)+'px';
                        targetDiv.style.height=(targetDivHeight-distY)+'px';
                    }

                    //设置最大最小范围:不能无限制缩放,影响体验
                    if(parseInt(targetDiv.style.width)>=300){
                        targetDiv.style.width=300+'px';
                    }
                    if(parseInt(targetDiv.style.width)<=150){
                        targetDiv.style.width=150+'px';
                    }

                    if(parseInt(targetDiv.style.height)>=300){
                        targetDiv.style.height=300+'px';
                    }
                    if(parseInt(targetDiv.style.height)<=150){
                        targetDiv.style.height=150+'px';
                    }
                }

                document.onmouseup=function(){
                    document.onmousemove=null;
                }
            }
        },
        mounted:function(){
            
        }
    };/* end of export */

    //拖动鹰眼:
    
    

</script>

<style scoped>
#eagleMapContainer{
    position: absolute; 
    left: 13%; 
    bottom: 10px; 
    z-index: 200; 
    overflow: hidden; 
    visibility: visible; 
    width: 200px; 
    height: 200px;
}
#eagleMap {
    width: 100%; 
    height: 100%; 
    top: 0px;      
    right: 0px;
    position: absolute;
    z-index: 1000;
}
#tz{
    position: absolute; 
    right: 1px; 
    top: 1px; 
    width: 28px; 
    height: 28px; 
    cursor: ne-resize; 
    z-index: 200001; 
    background-image: url("");

}
#tz:hover{
    background-color: #666;
    //background-image: "images/arrow.png";
}
#move_tz{
    position: absolute;
    right: 0px; 
    top: 0px; 
    width: 27px; 
    height: 20px; 
    cursor: ne-resize; 
    z-index: 100; 
    background-image: url(""); 
    background-position: 0px 0px;
}

</style>

主要是看dragEagle函数里的代码。

其中:e.target.parentNode.parentNode;.children[0]是通过鼠标点击的对象来获取要设置的对象的宽高。直接用document.getElementById 比较方便,即便元素的嵌入关系改变了,一样可以找到该对象。

 

注:拖拽箭头是利用鼠标拖动的地方是div的右上方,所以箭头是右上方向的箭头,即设置div的css中的属性为cursor: ne-resize;

参考http://www.w3school.com.cn/tiy/t.asp?f=csse_cursor 可以设置其他方向箭头。

flex实现鼠标滚动放大缩小(以鼠标的位置为中心放大缩小) flex实现鼠标滚动放大缩小(以鼠标的位置为中心放大缩小)源码奉上 立即下载

相关推荐

DSMA时序修复避坑指南:当Setup和Hold互卡时,除了调Margin还能做什么?

本文深入探讨DSMA时序修复中的Setup与Hold互锁问题,提供7种高阶策略,包括优先级判断、高级参数组合、单元类型智能替换等,帮助工程师突破时序收敛瓶颈。特别针对fix_eco_timing命令的隐藏参数和物理协同优化进行详细解析,助力芯片设计实现时序收敛。

weixin_30162121的博客 298

vue-drag-resize 可拖动缩放元素的Vue组件

vue-drag-resize 属性及事件

weixin_55534306的博客 1万+

Stata面板数据OLS回归分析实战指南

OLS回归作为计量经济学的核心分析方法,通过最小化残差平方和实现参数估计,广泛应用于经济学实证研究。其技术价值在于模型简洁、结果易于解释,特别适合处理面板数据中的复杂关系。在实际应用中,配合robust标准误能有效解决异方差问题,而固定效应模型则可控制个体特异性。本文以Stata软件为例,详细演示从数据导入、描述性统计到混合OLS和固定效应模型构建的全流程,重点解析面板数据特有的格式设定、模型选择标准以及结果呈现技巧,为经济学研究者提供可直接复用的分析框架。

weixin_29051811的博客 268

vue-drag-resize 全解,vue拖拽缩放组件

vue-drag-resize是一个支持拖拽与缩放的vue插件,支持vue 1.x与2.x,使用方便,上手便利,具有以下的几个特征: 特征 轻量级,无依赖性 所有的操作都是可联动的 支持触摸事件 定义元素可拖拽,或者可缩放,或者二者兼有 提供用于调整大小的操作点与操作框 可以按照比例缩放或者不按照比例缩放元素 可限制拖拽的最大与最小值、拖拽的范围是否超出其父元素 可限制拖动的方向为垂直或水平轴 ...

weixin_33957648的博客 5万+

极化码理论及算法研究4-巴氏参数、GA算法以及matlab仿真

目录 (如要找其他内容,欢迎访问我的主页寻找) #前言 #极化码概述 #极化码定义 #极化码编码 #极化码译码 #5G标准中极化码的编译码概述 #5G标准中极化码的编码 #5G标准中极化码的译码 #总结 极化码编码 ...

1万+

银河麒麟桌面操作系统V10(SP1)ssh服务安装与配置

在国产化的大背景下,各种国产操作系统逐步进入运维人员的视野,ssh作为linux远程连接工具,是运维人员必需的工具之一。本文主要介绍在银河麒麟桌面操作系统V10(SP1)上安装和配置ssh服务。

zhengshaolin128的博客 7811

vue拖拽缩放组件(vue-drag-resize)

vue-drag-resize是一个支持拖拽与缩放的vue插件,支持vue 1.x与2.x,使用方便,上手便利。 特征 1. 轻量级,无依赖性 2. 所有的操作都是可联动的 3. 支持触摸事件 4. 定义元素可拖拽,或者可缩放,或者二者兼有 5. 提供用于调整大小的操作点与操作框 6. 可以按照比例缩放或者不按照比例缩放元素 7. 可限制拖拽的最大与最小值、拖拽的范围是否超出其父元素 8. 可限制拖动的方向为垂直或水平轴 gitHib地址: ht

qq_17627195的博客 1万+

从 ST22 到根因定位:ABAP Dumps 全景排查指南(含典型 Dump 案例、修复套路与云时代实践)

本文系统介绍了SAP系统中ABAP短转储(Dump)的分析方法。首先指出短转储是程序运行时无法处理的错误导致系统强制终止执行。文章详细解析了短转储报告各区块的作用:从概述性的Short Text和What happened,到核心的Error Analysis和Source Code Extract,再到关键的系统字段Contents of system fields和调用栈Active Calls/Events。针对不同场景提供了排查建议:客户代码应建立可控边界,标准对象优先查阅SAP Notes。最后推

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 486

vue-draggable-resizable 插件使用总结

一、安装和基本用法 npm官方文档 npm install --save vue-draggable-resizable 1、全局注册组件 // main.js中写入: import Vue from 'vue' import VueDraggableResizable from 'vue-draggable-resizable' // 可选择导入默认样式 import 'vue-draggable-resizable/dist/VueDraggableResizable.css' Vue.compon

HYeeee的博客 1万+

基于YOLOv10的机器人抓取引导系统:从物体检测到精准抓取

python# 数据标注工具简化版import os"""启动标注工具""""""标注单张图像"""print(f"标注图像: {os.path.basename(img_path)}")print("请在图像上绘制抓取矩形框...")# 这里应该实现交互式标注界面# 简化版本直接返回示例标注# 示例标注数据"""保存标注结果"""# 保存为YOLO格式# 转换为YOLO格式。

YOLO 378

在 SAP ABAP 里可靠地对接 FTP 服务器:从连接、命令到传输与排错的完整实战

本文详细介绍了在SAP ABAP中实现FTP文件交换的完整技术方案。文章首先解析了FTP协议的双连接特性(控制连接与数据连接),强调保持控制连接的重要性。随后详细说明了ABAP中FTP操作的四步标准流程:建立连接(包含HTTP_SCRAMBLE加密)、执行命令、断开连接和关闭RFC通道。文章提供了实战案例代码,演示如何将FTP文件复制到应用服务器再读取进内表处理,特别指出后台作业与前台操作的关键差异。最后总结了常见错误排查要点,包括连接模型、路径设置和资源释放等问题。全文通过SAP标准函数模块的调用顺序、典

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 310

VUE通过托拽div边框实现改变div大小

VUE通过托拽div边框实现改变div大小

收集、分享 2450

通过 MATLAB/Simulink + Simscape Battery,构建了锂电池老化模型与容量衰减仿真系统

本文基于MATLAB/Simulink平台,构建锂电池老化模型与容量衰减仿真系统,研究储能电池健康管理技术。通过搭建电化学-老化耦合模型,模拟循环和日历老化机制,分析温度、充放电倍率、DOD等因素对电池寿命的影响。系统实现了SOH在线估计和RUL预测功能,仿真了标准日历老化、高倍率循环和峰谷套利等典型工况下的电池衰减行为。结果表明:高温和深充放会显著加速电池老化,而精准的SOH管理可提升储能系统经济性30%以上。文章还探讨了数字孪生、机器学习等高级优化方向,为储能系统长周期运营提供技术支撑。

xiaoheshang_123的博客 400

不可思议!Vue拖拽插件的实战大揭秘,竟然惊人抛弃了常规选择!

"vue-drag-resize" 是一个基于 Vue 框架的拖拽和调整大小插件。它提供了简单而灵活的API,使开发者能够轻松实现元素的拖拽和调整大小功能。通过 "vue-drag-resize",您可以让用户按需拖拽和调整大小各种页面元素,如窗口、图像、卡片等。该插件还支持限制元素的移动范围和尺寸,使其与布局相匹配。同时,它还允许开发者自定义样式、添加事件监听器以及处理回调函数。无论是创建可交互的拖拽组件还是实现可调整大小的布局,"vue-drag-resize" 都是一个强大且易用的选择。

weixin_49562392的博客 2147

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Vue中使用vue-drag-resize实现窗体可拖拽和随意缩放大小

在上面的基础上,实现弹窗窗体可移动以及随意缩放大小。

BADAO_LIUMANG_QIZHI的博客 3926

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【Vue】:利用 vue-drag-resize 拖拽缩放插件,实现对元素的拖拽以及拉伸操作,从而调整元素的宽度和高度

“vue-drag-resize” 是一个用于 Vue.js 的插件,它允许你在 Vue 应用中轻松实现可拖拽和可调整大小的元素

Anislandwhale的博客 5996

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

vue-drag-resize实现页面的拖拽与缩放(解决为何不能缩放

用法: 注意:VueDragResize的w属性和h属性必须有值 <template> <!--//需要给VueDragResize套一个div--> <div id="app"> <!--//缩放功能主要是缩放VueDrangResize标签--> <VueDragResize :isActive="true" :w="200" :h="200" v-on:resizing="resize" v-on:draggi...

m0_57454052的博客 3119

vue项目拖拽缩放组件vue-drag-resize的详细配置

使用此参数,您可以设置组件的边界区域,并在实时调整大小时使用它。通过单击组件并单击组件区域外部来禁用组件的行为(isActive:true / false)。父级的transform:scale()css定义中的值相同。父级的transform:scale()css定义中的值相同。使用此参数,您可以设置组件的边界区域,并在实时调整大小时使用它。每当用户单击组件外部的任何位置时调用,以便将其停用。拖动/调整大小和杆的大小将使用该值计算。拖动/调整大小和杆的大小将使用该值计算。定义应该用于拖动组件的选择器。

yajia2的博客 3556

vue-drag-resize(可拖动/调整大小的元素的 Vue 第三方库)

/ 拖拽时可以确定元素位置。

Xiang_Gong_Ya_的博客 5280

vue-drag-resize 可拖拽的vue轻量级插件

vue-drag-resize 可拖拽的vue轻量级插件插件地址使用方式属性isActive 是否激活状态isDraggable 是否允许拖拽isResizable 是否允许缩放aspectRatio 是否等比例缩放w 组件宽度h 组件高度minw 最小宽度minh 最小高度x 定位lefty 定位topz 层级sticks 元素缩放的节点定义preventActiveBehavior 单击组件外区域来禁止组件行为parentLimitation 是否超出父级元素parentW 父级宽度parentH 父级

阿坤的博客 4446

vue-drag-resize 拖拽缩放插件

一、前言 项目需求,在网上找到一个好用的插件。 中文详解:链接 git:链接 二、效果 三、源码 <template> <div class="main"> <vue-drag-resize :w="vw" :h="vh" v-on:resizing="resize" >   <div class="box" :style="{ width: `${vw}px`, height: `${vh}px` }"&g

前端技术 5890

【亲测免费】 Vue-drag-resize: Vue.js的轻量级拖拽缩放组件

**Vue-drag-resize** 是一个专为Vue框架设计的组件,兼容Vue2和Vue3,用纯JavaScript编写的,无依赖的强大工具。本项目致力于提供易用且高效的元素拖拽与大小调整功能,使得开发者能够轻松地在Vue应用中实现交互式的界面元素调整。主要编程语言是TypeScript/JavaScript,并遵循现代Vue的最佳实践。 ## 核心功能 - **双向交互性**:所有属性反...

gitblog_07199的博客 781

vue-drag-resize的默认样式修改与拖拽层级

最近工作上的项目遇到了自由拖拽的问题,没有手动写轮子,在网上找了一个拖拽的组件 vue-drag-resize。遇到了两个问题 默认样式修改(去掉虚线边框) 拖拽层级,当前拖拽的元素层级要最大 修改默认样式 拖拽的组件在点击拖拽时,会有一个默认的虚线边框 第一个问题比较好解决,在网上一搜就能搜到 解决方法:在style标签里写上 .vdr.active:before { display:none; } 当前拖拽的元素层级要最大 vue-drag-resize层级默认是第一个元素最小,然后依次递增

buruyang的博客 5001

关于vue-drag-resize的拖拽

首先,这是一个基础知识的地地址 再看下实现的效果 bilbill链接 目录 一、两个框之间的拖拽添加 二、两个框之间的删除 三、一个框之内的互斥移动 四、代码 我就说这次的关键点 一、两个框之间的拖拽添加 主要是判断位置push进去,在拖拽中获取当前拖拽到另外一个框后的增加或删除的index 二、两个框之间的删除 这比较简单到某个固定位置删除即可 三、一个框之内的互斥移动 这个效果实现了,但我没做的非常好 关键点就是绑定的key值,要唯一,不然会在拖拽的时候出现错乱,然后判断.

zhanghengqrew的博客 2042
上一篇: leaflet 中 geojson的坐标xy与polyline,polygon,rectangle,circle等元素的坐标xy颠倒的情况总结
下一篇: JavaScript 鼠标拖拽div 改变其大小
acoolgiser
博客等级 码龄11年 179粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值