基於Vue實現拖拽升級(九宮格拖拽)
前言
在本文中將會用Vue完成九宮格拖拽效果,同時介紹一下網格佈局。具體程式碼以及demo可以點以下超連結進入
傳送門:
效果例項
Demo
簡單瞭解Grid佈局(網格佈局)
什麼是網格佈局
CSS網格佈局(又稱“網格”),是一種二維網格佈局系統。CSS在處理網頁佈局方面一直做的不是很好。一開始我們用的是table(表格)佈局,然後用float(浮動),position(定位)和inline-block(行內塊)佈局,但是這些方法本質上是hack,遺漏了很多功能,例如垂直居中。後來出了flexbox(盒子佈局),解決了很多佈局問題,但是它僅僅是一維佈局,而不是複雜的二維佈局,實際上它們(flexbox與grid)能很好的配合使用。Grid佈局是第一個專門為解決佈局問題而建立的CSS模組.
grid
簡單說說網格佈局的屬性
display:
grid: 生成塊級網格
inline-grid: 生成行內網格
subgrid: 如果網格容器本身是網格項(巢狀網格容器),此屬性用來繼承其父網格容器的列、行大小。
grid-template-columns
設定網格列大小
grid-template-rows
設定網格行大小
grid-template-areas
設定網格區域
grid-column-gap
設定網格列間距
grid-row-gap
設定網格行間距
grid-gap
縮寫形式 grid-gap:
justify-items
水平方向對齊方式(在這裡只是簡單說明)
start: 左對齊
end: 右對齊
center: 居中對齊
stretch: 填滿(預設)
align-items
垂直方向對齊方式
start: 頂部對齊
end: 底部對齊
center: 居中對齊
stretch:填滿(預設)
當然,如果看不懂也不要緊,這裡有一篇個人十分喜歡的網格佈局的文章。裡面介紹得十分詳細。可以供大家深入學習網格佈局內容。
傳送門:
Vue實現九宮格拖拽
Demo地址:
實現九宮格佈局
/*css*/ .container{ position: relative; /*實現定位,使得滑塊定位相對於此*/ display: grid; /*定義網格佈局*/ width: 300px; height: 300px; grid-template-columns: 100px 100px 100px; /*實現九宮格,行列各三*/ grid-template-rows: 100px 100px 100px; grid-template-areas: "head1 head2 head3" /*定義個格子的名稱,方便計算*/ "main1 main2 main3" "footer1 footer2 footer3"; border: 1px solid #000; margin: 0 auto; } .block{ position: absolute; /*相對於container定位*/ width: 100px; height: 100px; display: flex; /*flex佈局,使得文字在中央*/ justify-content: center; justify-items: center; align-items: center; align-content: center; user-select: none; /*使用者不可選定文字*/ background: olivedrab; border: 1px solid #000 }
//app.vue {{positionX}} {{positionY}}
實現拖拽的JS程式碼部分
在這裡我選取一些核心程式碼出來講解。程式碼有所省略,因為程式碼著實有點長,太佔篇幅而且沒多大意義,如果需要瀏覽全部程式碼可以點選上面的Demo連線。
總結
到這裡我們把九宮格拖拽實現了,同時學習了Grid(網格佈局)。總的做下來,發現用網格佈局做網格拖拽更加費事,但是為了後續可以方便一些,也只好搗鼓下來了。到這裡我們就把基於Vue的九宮格拖拽實現了,有問題或者發現錯誤的請指正,謝謝大家
珍惜淡定的心境,苦過後更加清
作者:bb7bb
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2370/viewspace-2810103/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HTML5拖拽API實現vue樹形拖拽元件HTMLAPIVue元件
- 基於Vue實現可以拖拽排序的樹形表格(已開源)Vue排序
- [MAUI]實現動態拖拽排序網格UI排序
- Cypress實現拖拽
- 基於螢石雲實現的九宮格影片監控效果
- 基於vue-simplemde實現圖片拖拽、貼上功能的一些思考Vue
- Grid 拖拽佈局實現
- React 實現炫酷的可拖拽網格佈局React
- 使用 yogaKit 實現一個九宮格
- 實現小程式canvas拖拽功能Canvas
- 基於javascript的拖拽類封裝^o^JavaScript封裝
- 使用TypeScript給Vue 3.0寫一個指令實現元件拖拽TypeScriptVue元件
- vxe-table 實現列拖拽排序排序
- 使用BottomSheetBehavior實現美團拖拽效果
- Easyui datagrid 實現表格記錄拖拽UI
- Jquery實現拖拽式繪圖工具jQuery繪圖
- 實現QQ的TabBar拖拽動效tabBar
- angualr實現滑鼠拖拽排序功能排序
- vue寫的一個拖拽容器Vue
- 安利:vue 好用的拖拽排序元件Vue排序元件
- 簡單介紹vue3.x 使用jsplumb實現拖拽連線VueJS
- vue3+ts 指令拖拽div案例Vue
- 拖拽方式生成Vue使用者介面Vue
- 完美拖拽
- UMG————拖拽
- iOS 中使用 FlexBox 佈局實現圖片九宮格iOSFlex
- 短視訊直播系統,Vue實現element-ui彈框可以拖拽VueUI
- Vue 結合 echarts 原生 html5 實現拖拽排版報表系統VueEchartsHTML
- react中使用dnd-kit實現拖拽排序React排序
- ItemTouchHelper實現可拖拽和側滑的列表
- vue-drag-resize 全解,vue拖拽縮放元件Vue元件
- 前端實現檔案下載和拖拽上傳前端
- 從面相過程的拖拽到物件導向的拖拽再到簡易的元件拖拽物件元件
- 拖拽 驗證
- 滑鼠拖拽事件事件
- JavaScript拖拽效果JavaScript
- js拖拽技能JS
- js拖拽:右下角拖拽改變圖片大小JS