vue實(shí)現(xiàn)div高度可拖拽
本文實(shí)例為大家分享了vue實(shí)現(xiàn)div高度可拖拽的具體代碼,供大家參考,具體內(nèi)容如下
這里有一個(gè)現(xiàn)成的demo,可以實(shí)現(xiàn)頁(yè)面div的拖拽功能,但是和我想要的效果不是很一樣,所以說(shuō)后邊有根據(jù)我的實(shí)際需求又重新修改了一下,先看一下現(xiàn)在的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="拖動(dòng)調(diào)整大小" 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'); //得到點(diǎn)擊時(shí)該地圖容器的寬高: var targetDivHeight = targetDiv.offsetHeight; var startX = e.clientX; var startY = e.clientY; var _this = this; document.onmousemove = function (e) { e.preventDefault(); //得到鼠標(biāo)拖動(dòng)的寬高距離:取絕對(duì)值 var distX = Math.abs(e.clientX - startX); var distY = Math.abs(e.clientY - startY); //往上方拖動(dòng): if (e.clientY < startY) { targetDiv.style.height = targetDivHeight + distY + 'px'; } //往下方拖動(dòng): 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>
但是這個(gè)效果和我想要的不是很一樣,所以得稍微改造了一下。
我想要效果是: 我有一個(gè)div,里面包含了很多小方塊列表,因?yàn)槌鲈O(shè)置了超出滾動(dòng),所以是在有滾動(dòng)條的div上添加實(shí)現(xiàn)高度變化的拖拽。
接下來(lái)就是改造一下上邊的demo,簡(jiǎn)單點(diǎn),直接上代碼:
在上邊需要拖拽的div下面添加一個(gè)div,就是點(diǎn)到這個(gè)div開(kāi)始實(shí)現(xiàn)拖拽功能。
<!-- 拖拉拽的小框 --> <div id="tz" @mousedown="dragEagle"> <div title="拖動(dòng)調(diào)整大小" id="move_tz"></div> </div>
需要根據(jù)拖拽實(shí)現(xiàn)高度變化的div設(shè)置一個(gè)id,假設(shè)為 “fuDiv”,然后編寫(xiě)方法。
// 拖拉 dragEagle(e) { var targetDiv = document.getElementById('fuDiv'); //得到點(diǎn)擊時(shí)該地圖容器的寬高: var targetDivHeight = targetDiv.offsetHeight; var startX = e.clientX; var startY = e.clientY; var _this = this; document.onmousemove = function (e) { e.preventDefault(); //得到鼠標(biāo)拖動(dòng)的寬高距離:取絕對(duì)值 var distY = Math.abs(e.clientY - startY); //往上方拖動(dòng): if (e.clientY < startY) { targetDiv.style.height = targetDivHeight - distY + 'px'; } //往下方拖動(dòng): 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; } },
然后給他們?cè)O(shè)置一下css樣式,其實(shí)這個(gè)地方就隨意了,根據(jù)自己喜好來(lái)。
#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; }
最后效果:
效果不是特別的好,還有很多地方是值得優(yōu)化以下的,暫時(shí)不寫(xiě)了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue項(xiàng)目打包后請(qǐng)求地址錯(cuò)誤/打包后跨域操作
這篇文章主要介紹了vue項(xiàng)目打包后請(qǐng)求地址錯(cuò)誤/打包后跨域操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11vue使用el-table篩選tree樹(shù)形結(jié)構(gòu)的數(shù)據(jù)問(wèn)題
這篇文章主要介紹了vue使用el-table篩選tree樹(shù)形結(jié)構(gòu)的數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07vue?element-ui動(dòng)態(tài)橫向統(tǒng)計(jì)表格的實(shí)現(xiàn)
這篇文章主要介紹了vue?element-ui動(dòng)態(tài)橫向統(tǒng)計(jì)表格的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08Vite打包項(xiàng)目后圖片丟失的簡(jiǎn)單解決方法
vue項(xiàng)目完成打包上線的時(shí)候很多人都會(huì)碰到靜態(tài)資源找不到的情況,下面這篇文章主要給大家介紹了關(guān)于Vite打包項(xiàng)目后圖片丟失的簡(jiǎn)單解決方法,需要的朋友可以參考下2023-05-05vue使用ElementUI時(shí)導(dǎo)航欄默認(rèn)展開(kāi)功能的實(shí)現(xiàn)
這篇文章主要介紹了vue使用ElementUI時(shí)導(dǎo)航欄默認(rèn)展開(kāi)功能的實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07html中引入Vue.js的cdn實(shí)現(xiàn)簡(jiǎn)單的文檔單頁(yè)
這篇文章主要為大家介紹了html中引入Vue.js的cdn實(shí)現(xiàn)簡(jiǎn)單的文檔單頁(yè)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Vue+elementUI?el-input輸入框手機(jī)號(hào)校驗(yàn)功能
這篇文章主要介紹了Vue+elementUI?el-input輸入框手機(jī)號(hào)校驗(yàn)功能,限制input框內(nèi)只能輸入數(shù)字,且為11位,通過(guò)實(shí)例代碼介紹了對(duì)輸入手機(jī)號(hào)做校驗(yàn)的方法,感興趣的朋友跟隨小編一起看看吧2023-10-10