Vue框架中div拖拽调整高度的效果怎么做
Admin 2022-07-02 群英技术资讯 1335 次浏览
本文实例为大家分享了vue实现div高度可拖拽的具体代码,供大家参考,具体内容如下
这里有一个现成的demo,可以实现页面div的拖拽功能,但是和我想要的效果不是很一样,所以说后边有根据我的实际需求又重新修改了一下,先看一下现在的demo效果。
<template> <div id="eagleMapContainer" style="border: 1px solid red;overflow-y: auto;" title=""> <div id="tz" @mousedown="dragEagle" style="border: 1px solid blue;"> <div title="拖动调整大小" id="move_tz" style="border: 1px solid green;"></div> </div> </div> </template> <script> export default { name: "eagleMap", data() { return {} }, methods: { dragEagle: function (e) { var targetDiv = document.getElementById('eagleMapContainer'); //得到点击时该地图容器的宽高: var targetDivHeight = targetDiv.offsetHeight; var startX = e.clientX; var startY = e.clientY; var _this = this; document.onmousemove = function (e) { e.preventDefault(); //得到鼠标拖动的宽高距离:取绝对值 var distX = Math.abs(e.clientX - startX); var distY = Math.abs(e.clientY - startY); //往上方拖动: if (e.clientY < startY) { targetDiv.style.height = targetDivHeight + distY + 'px'; } //往下方拖动: if (e.clientX < startX && e.clientY > startY) { targetDiv.style.height = (targetDivHeight - distY) + '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; } } }, }; </script> <style scoped> #eagleMapContainer { position: absolute; left: 13%; bottom: 10px; z-index: 200; overflow: hidden; visibility: visible; width: 200px; height: 200px; } #tz { position: absolute; right: 1px; top: 1px; width: 27px; height: 20px; cursor: ne-resize; z-index: 200001; background-image: url(""); } #tz:hover { background-color: #666; } #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>
但是这个效果和我想要的不是很一样,所以得稍微改造了一下。
我想要效果是: 我有一个div,里面包含了很多小方块列表,因为超出设置了超出滚动,所以是在有滚动条的div上添加实现高度变化的拖拽。
接下来就是改造一下上边的demo,简单点,直接上代码:
在上边需要拖拽的div下面添加一个div,就是点到这个div开始实现拖拽功能。
<!-- 拖拉拽的小框 --> <div id="tz" @mousedown="dragEagle"> <div title="拖动调整大小" id="move_tz"></div> </div>
需要根据拖拽实现高度变化的div设置一个id,假设为 “fuDiv”,然后编写方法。
// 拖拉 dragEagle(e) { var targetDiv = document.getElementById('fuDiv'); //得到点击时该地图容器的宽高: var targetDivHeight = targetDiv.offsetHeight; var startX = e.clientX; var startY = e.clientY; var _this = this; document.onmousemove = function (e) { e.preventDefault(); //得到鼠标拖动的宽高距离:取绝对值 var distY = Math.abs(e.clientY - startY); //往上方拖动: if (e.clientY < startY) { targetDiv.style.height = targetDivHeight - distY + 'px'; } //往下方拖动: if (e.clientX < startX && e.clientY > startY) { targetDiv.style.height = (targetDivHeight + distY) + 'px'; } if (parseInt(targetDiv.style.height) >= 320) { targetDiv.style.height = 320 + 'px'; } if (parseInt(targetDiv.style.height) <= 160) { targetDiv.style.height = 160 + 'px'; } } document.onmouseup = function () { document.onmousemove = null; } },
然后给他们设置一下css样式,其实这个地方就随意了,根据自己喜好来。
#tz { width: 100%; height: 5px; cursor: s-resize; z-index: 200001; } #move_tz { width: 100%; height: 5px; cursor: s-resize; z-index: 100; background-image: url(""); background-position: 0px 0px; }
最后效果:
效果不是特别的好,还有很多地方是值得优化以下的,暂时不写了。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
一.使用插件1.NodeJs自带的加密插件:crypto文档:https://nodejs.org/api/crypto.html可以用来将用户密码加密再存入数据库//随机生成加密token的密匙,用于jwt加密密匙lettokenSecret=crypto.randomBytes(16).toString('hex'), 2.用于生成token的插件:jwt-si
这篇文章主要为大家详细介绍了vue项目中canvas实现截图功能,截取图片的一部分,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这篇文章主要给大家分享解决重复请求的问题,下文给介绍了如何判断重复请求及如何取消重复请求的方法,本文有很详细的介绍,有这方面学习需要的朋友可以参考了解看看。
1、安装socket.ionpminstallsocket.io2、创建服务端代码server.jsvarapp=require('http').createServer(handler),io=require('socket.io').listen(app),fs=require('fs')app.listen(8080);io.set
这篇文章主要为大家介绍了Vue编程三部曲之模型树优化示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008