vue-grid-layout是一個功能強大的瀑布流佈局組件。支持用戶拖拽和對改變元素大小,並提供相應的事件進行自定義操做。並且佈局能夠存儲和再展示。css
經過NPM安裝vue
npm install vue-grid-layout
這是一個使用的例子npm
var testLayout = [ {"x":0,"y":0,"w":2,"h":2,"i":"0"}, {"x":2,"y":0,"w":2,"h":4,"i":"1"}, {"x":4,"y":0,"w":2,"h":5,"i":"2"}, {"x":6,"y":0,"w":2,"h":3,"i":"3"}, {"x":8,"y":0,"w":2,"h":3,"i":"4"}, {"x":10,"y":0,"w":2,"h":3,"i":"5"}, {"x":0,"y":5,"w":2,"h":5,"i":"6"}, {"x":2,"y":5,"w":2,"h":5,"i":"7"}, {"x":4,"y":5,"w":2,"h":5,"i":"8"}, {"x":6,"y":4,"w":2,"h":4,"i":"9"}, {"x":8,"y":4,"w":2,"h":4,"i":"10"}, {"x":10,"y":4,"w":2,"h":4,"i":"11"}, {"x":0,"y":10,"w":2,"h":5,"i":"12"}, {"x":2,"y":10,"w":2,"h":5,"i":"13"}, {"x":4,"y":8,"w":2,"h":4,"i":"14"}, {"x":6,"y":8,"w":2,"h":4,"i":"15"}, {"x":8,"y":10,"w":2,"h":5,"i":"16"}, {"x":10,"y":4,"w":2,"h":2,"i":"17"}, {"x":0,"y":9,"w":2,"h":3,"i":"18"}, {"x":2,"y":6,"w":2,"h":2,"i":"19"} ]; var GridLayout = VueGridLayout.GridLayout; var GridItem = VueGridLayout.GridItem; new Vue({ el: '#app', components: { GridLayout, GridItem, }, data: { layout: testLayout, }, });
<grid-layout :layout="layout" :col-num="12" :row-height="30" :is-draggable="true" :is-resizable="true" :vertical-compact="true" :margin="[10, 10]" :use-css-transforms="true"> <grid-item v-for="item in layout" :x="item.x" :y="item.y" :w="item.w" :h="item.h" :i="item.i"> {{item.i}} </grid-item> </grid-layout>
參數 | 類型 | 默認值 | 說明 | |
---|---|---|---|---|
autoSize | Boolean | true | 是否根據內容肯定容器的高度 | |
colNum | Number | 12 | 列數 | |
rowHeight | Number | 150 | 行高 | |
maxRows | Number | Infinity | 最大的行高 | |
margin | Array | [10, 10] | 兩個可移動元素間的距離 | |
isDraggable | Boolean | true | 是否支持推拽 | |
isResizable | Boolean | true | 是否支持改變大小 | |
useCssTransforms | Boolean | true | 是否使用自定義的過渡效果 | |
verticalCompact | Boolean | true | 是否使用verticalCompact佈局 | |
layout | Array | - | 佈局位置 |
輪子工廠--一個分享優秀的vue,angular組件的網站app