日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

vue3 可拖動的左右面板分割組件實現

瀏覽:92日期:2022-09-29 09:35:15
目錄分解組件左側面板右側面板入參分解propsslots具體實現如何拖動呢?事件監聽寬度處理優化buggit地址

最近在使用vue的時候,遇到一個需求,實現左右div可通過中間部分拖拽調整寬度,本文就整理一下,分享給大家,具體如下:

效果圖

vue3 可拖動的左右面板分割組件實現

分解組件

整體使用flex布局

左側面板 面板的具體內容通過slot具名插槽傳入。 title通過prop傳入 可拖動,為了保證內容樣式不會被拖動所破壞,對面板的寬度設定最大值/最小值右側面板 右側面板寬度隨著左側面板的寬度變化而變化,此處需注意,內容的寬度使用flex-auto自動適應。 需要做移動端的自適應。 自適應使用tailwind的媒體查詢

vue3 可拖動的左右面板分割組件實現

入參分解props @param {Number} maxWidth 最大寬度 @param {Number} minWidth 最小寬度 @param {String} leftTitle 左標題 @param {String} rightTitle 右標題? @param {Boolean} sotoreage 是否存儲與localstoregeslots left-content {Element} 左側內容 right-content {Element} 右側內容具體實現如何拖動呢?

在左側面板與右側面板之間添加一個隱藏的盒子,我將這個盒子隱藏在box-shadow之中。具體事件放在這個div中實現

<div class='w-2 cursor-move hidden md4:block'onMousedown={hnadleMouseDown}></div>事件監聽

const hnadleMouseDown = (evt: MouseEvent) => { /* 獲取起始點位,并存儲 */ let { pageX, pageY } = evt; basePosition.pageX = pageX; basePosition.pageY = pageY; /* 監聽鼠標的移動事件 */ document.addEventListener('mousemove', handleMouseMove); document.addEventListener('mouseup', handleMouseUp); }; const handleMouseMove = evt => { /* 阻止瀏覽器默認事件,防止觸發瀏覽器的手勢功能 */ evt.preventDefault(); /* 設置定時器,防止dom多次回流 */ clearTimeout(timer.value); timer.value = setTimeout(() => {let { pageX } = evt;const baseDiv = document.querySelector('.right-border-shadow');/* 處理寬度,是否處于最大值/最小值之間 */let baseWidth: Number | undefined = Number(baseDiv?.clientWidth) + (pageX - basePosition.pageX);baseWidth = baseWidth > Number(props?.maxWidth) ? props.maxWidth : baseWidth;baseWidth = Number(baseWidth) < Number(props?.minWidth) ? props.minWidth : baseWidth;baseDiv?.setAttribute('style', `width:${baseWidth}px`);/* emit寬度改變的事件 */ctx.emit('drugend');/* 存儲到store */setStore(baseWidth); }, 50); }; const handleMouseUp = evt => { /* 結束拖動之后,取消事件監聽,并emit出最終寬度 */ const width = document.querySelector('.right-border-shadow')?.clientWidth; document.removeEventListener('mousemove', handleMouseMove); document.removeEventListener('mouseup', handleMouseUp); ctx.emit('drugend', width); };寬度處理

style={`width:${ store.get('split-width') ? store.get('split-width') : props.minWidth ? props.minWidth : 384 }px`}優化

手動改變瀏覽器視窗寬度

nextTick(() => {ctx.emit('load', ctx);MutationObserver = window.MutationObserver;if (MutationObserver) { /* 監聽瀏覽器的窗口變化,在部分情況下需要這個api */ mo = new MutationObserver(function() { const __wm = document.querySelector('#rezie-id'); // 只在__wm元素變動才重新調用 __canvasWM if (!__wm) { // 避免一直觸發 mo.disconnect(); mo = null; ctx.emit('resize'); } }); mo.observe(document.querySelector('#rezie-id'), { attributes: true, subtree: true, childList: true, });} });

未生效,求指點

bug

父組件的onMounted鉤子中獲取子元素的slot元素節點報錯,為null。目前的解決辦法是在子組件的onMounted鉤子中拋出一個load事件,父組件使用onLoad去處理接下來的邏輯。

git地址

倉庫地址預覽地址

到此這篇關于vue3 可拖動的左右面板分割組件實現的文章就介紹到這了,更多相關vue3 可拖動左右分割面板內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费不卡中文字幕在线| 88久久精品| 精品久久久网| 99亚洲精品| 麻豆网站免费在线观看| 91午夜精品| 国产精选久久| 国产一区二区精品久| 久久青草久久| 亚洲综合日本| 欧美一区成人| 精品国产黄a∨片高清在线| 精品视频一区二区三区在线观看| 亚洲我射av| 免费一级欧美片在线观看网站| 免费日韩av片| 亚洲色图国产| 麻豆成人在线观看| 91高清一区| 天堂成人国产精品一区| 国产毛片精品| 激情欧美一区二区三区| av亚洲一区二区三区| 国产欧美另类| 欧美精品观看| 欧美久久香蕉| 日韩专区在线视频| 1024精品久久久久久久久| 国产aa精品| 精品美女视频| 久久久亚洲欧洲日产| 国产精品成人a在线观看| 久久精品91| 精品欠久久久中文字幕加勒比| 欧美二三四区| 日韩精品导航| 日韩国产高清在线| 久久精品国产成人一区二区三区| 欧美91福利在线观看| 国产精品精品| www.51av欧美视频| 9国产精品视频| 精品一区二区三区中文字幕视频 | а√在线中文在线新版| 欧美色图国产精品| 久久男人av| 国产精区一区二区| 日韩中文一区二区| 亚洲视频www| 久久人人精品| 成人精品国产亚洲| 国产精品.xx视频.xxtv| 亚洲小说春色综合另类电影| 91精品精品| 三级小说欧洲区亚洲区| 国产拍在线视频| 精品中文字幕一区二区三区 | 国内精品美女在线观看| 欧美黄色一区二区| 国产亚洲精品美女久久 | 美女网站一区| 国产一在线精品一区在线观看| 成人美女视频| 久久蜜桃精品| 日韩午夜免费| 亚洲中午字幕| 99香蕉国产精品偷在线观看| 男女精品网站| 一区二区三区网站| 97久久亚洲| 久久激情av| 日韩中文字幕高清在线观看| 久久在线免费| 亚洲专区视频| 欧美在线精品一区| 黄色av一区| 国产午夜久久| 欧美综合另类| 欧美亚洲国产精品久久| 欧美1级日本1级| 亚洲精品网址| 91国内精品| 日本久久二区| 国产精品片aa在线观看| 欧美日韩色图| 四虎精品一区二区免费| 亚洲精选成人| 久久免费精品| 国产精品尤物| 欧美国产另类| 欧美日韩视频网站| 国产99精品| 精品国产一区二区三区性色av| 国产高清一区二区| 欧美日韩国产亚洲一区| 色在线视频观看| 国产一区二区精品| 免费看日韩精品| 久久久噜噜噜| 午夜一级久久| 国产一区二区三区四区大秀| 亚洲精品动态| 欧美日韩在线观看视频小说| 三级在线观看一区二区| 日韩av中文字幕一区二区| 捆绑调教美女网站视频一区 | 亚洲午夜国产成人| 日韩中文影院| 久久国产人妖系列| 久久午夜影院| 国产伦精品一区二区三区在线播放 | 先锋亚洲精品| 麻豆视频久久| 日韩高清成人| 爽好多水快深点欧美视频| 日韩一区二区三区精品视频第3页| 免费在线亚洲| 老司机精品久久| 在线国产一区| 精品三级在线| 狂野欧美性猛交xxxx| 美国三级日本三级久久99| 欧美精品资源| av中文字幕在线观看第一页| 久久成人精品| 激情偷拍久久| 亚洲乱码视频| 红桃视频欧美| 欧美日韩日本国产亚洲在线| 久久精品1区| 亚洲高清成人| 亚洲免费精品| 免费人成网站在线观看欧美高清| 中文久久精品| 综合一区av| 国产精品一区三区在线观看| 日韩av不卡一区二区| 国产美女亚洲精品7777| 国产劲爆久久| 一本大道色婷婷在线| 国产精品高颜值在线观看| 欧美sm一区| 日韩专区一卡二卡| 国产精品成人自拍| 亚洲女同av| 九色精品91| 亚洲大片在线| 黑丝一区二区| 日韩有吗在线观看| 久久精品三级| 91九色精品| 国产视频网站一区二区三区| 精品视频亚洲| 在线国产一区| 欧美国产先锋| 超级白嫩亚洲国产第一| 久久亚洲精品伦理| 欧美在线91| 在线日韩中文| 国产亚洲久久| 好看的亚洲午夜视频在线| 国产欧美日韩视频在线| 日韩激情一区| 97久久精品| 亚洲天堂av影院| 日韩一区二区三免费高清在线观看 | 久久天堂影院| 中文字幕成人| 国产91在线播放精品| 老司机久久99久久精品播放免费| 久久精品网址| 日韩精品导航| 日韩中文字幕一区二区三区| 国产suv精品一区| 国产欧美日韩在线观看视频| 美女91精品| av在线日韩| 里番精品3d一二三区| 日韩超碰人人爽人人做人人添| 欧洲毛片在线视频免费观看| 国产一区二区三区探花| 欧美精品三级在线| 亚洲精品日本| 亚洲激情精品| 99免费精品| 日韩av在线中文字幕| 国产精品一区二区av交换 | 中文在线资源| 九九99久久精品在免费线bt| 国产精品久久久久毛片大屁完整版 | 91看片一区| 日韩成人亚洲| 亚洲v在线看| 国产一区二区三区国产精品| 国产精品久久久久久av公交车 | 亚洲午夜精品久久久久久app| 老牛影视精品| 日韩精品不卡一区二区| 日韩精品麻豆| 午夜视频精品|