vue實現(xiàn)拖拽滑動分割面板
本文實例為大家分享了vue實現(xiàn)拖拽滑動分割面板的具體代碼,供大家參考,具體內容如下
需求背景
左邊是列表,右邊是詳情。 想更大范圍的查看詳情,所以要拖拽滑塊,進行面板的分割
整體思路
- 在布局上,采用flex布局,單位采用百分比。設置flex:1,讓其自動伸縮
- 滑動滑塊,計算滑塊在滑動過程中,占整個頁面的百分比
- 將百分比,通過動態(tài)樣式賦值給列表頁的寬度
- 同時改變滑塊的位置(也是百分比形式)
- 其次就是在vue里對鼠標事件的使用
代碼實現(xiàn)
在template里 寫事件
@mousedown.prevent="mousedown"
在methods里寫方法
/** ? ? ?* 按下鼠標 ? ? ?*/ ? ? ? mousedown() { ? ? ? ? document.addEventListener('mousemove', this.handleMouseMove, false); ? ? ? ? document.addEventListener('mouseup', this.handleMouseUp, false); ? ? }, ? ? /** ? ? ?* 按下滑動器,移動鼠標 ? ? ?*/ ? ? handleMouseMove(e) { ? ? ? /** ? ? ? ?* 計算容器總寬度 ? ? ? ?* 計算滑塊到左邊的距離 ? ? ? ?* 計算偏移百分比: (滑塊距離左邊的距離 / 頁面寬度) * 100 ? ? ? ?* 傳遞移動百分比和距左邊的距離 ? ? ? ?*/ ? ? ? const clientRect = this.$refs.mainContent.getBoundingClientRect(); ? ? ? const offset = e.pageX; ? ? ? const panelPercent = (offset / clientRect.width) * 100; ? ? ? this.panelPercent = panelPercent; ? ? ? this.mainContentWidth = offset; ? ? ? this.$refs.imgMove.style.left = panelPercent + '%'; ? ? ? console.log('拖動中', this.panelPercent); ? ? }, ? ? /** ? ? ?* 松開滑動器 ? ? ?*/ ? ? handleMouseUp () { ? ? ? document.removeEventListener('mousemove', this.handleMouseMove, false); ? ? },
對邊界處理
if (this.panelPercent < this.min) { ? ? ? ? this.panelPercent = this.min ? ? ? } ? ? ? if (this.panelPercent > this.max) { ? ? ? ? this.panelPercent = this.max }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
詳解Vue中數(shù)據(jù)可視化詞云展示與詞云的生成
數(shù)據(jù)可視化是現(xiàn)代Web應用程序中的一個重要組成部分,詞云是一種非常流行的數(shù)據(jù)可視化形式,可以用來展示文本數(shù)據(jù)中的主題和關鍵字,本文我們將介紹如何在Vue中使用詞云庫進行數(shù)據(jù)可視化詞云展示和詞云生成,需要的可以參考一下2023-06-06詳解elementui之el-image-viewer(圖片查看器)
這篇文章主要介紹了詳解elementui之el-image-viewer(圖片查看器),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-08-08基于vue中解決v-for使用報紅并出現(xiàn)警告的問題
下面小編就為大家分享一篇基于vue中解決v-for使用報紅并出現(xiàn)警告的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03vue3使用vue-cli引入windicss報錯Can‘t resolve windi.css問題
這篇文章主要介紹了vue3使用vue-cli引入windicss報錯Can‘t resolve windi.css問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03vue報錯Failed to execute 'appendChild&apos
這篇文章主要為大家介紹了vue報錯Failed to execute 'appendChild' on 'Node'解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11Vue項目打包(build)時,自動打以時間命名的壓縮包方式
這篇文章主要介紹了Vue項目打包(build)時,自動打以時間命名的壓縮包方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10Vue3?封裝?Element?Plus?Menu?無限級菜單組件功能的詳細代碼
本文分別使用?SFC(模板方式)和?tsx?方式對?Element?Plus?*el-menu*?組件進行二次封裝,實現(xiàn)配置化的菜單,有了配置化的菜單,后續(xù)便可以根據(jù)路由動態(tài)渲染菜單,對Vue3?無限級菜單組件相關知識感興趣的朋友一起看看吧2022-09-09vue,angular,avalon這三種MVVM框架優(yōu)缺點
本文給大家具體分析了下vue,angular,avalon這三種MVVM框架優(yōu)缺點,十分的細致全面,有需要的小伙伴可以參考下2016-04-04