npm安装
npm install vue-grid-layout --save
使用demo
<grid-layout
:layout.sync="layout"
:col-num="12"
:row-height="30"
:is-draggable="true"
:is-resizable="true"
:is-mirrored="false"
: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"
:key="item.i">
{{item.i}}
</grid-item>
</grid-layout>
layout: [
{"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"},
],
参数说明
layout: 选择组件的列表,Array类型。数组中的每个项目必须有i,x,y,w和h属性。
responsiveLayouts: 响应式布局,非必须。
colNum:指明画布中一共多少列,默认为12列。
rowHeight: 一行所占的高度,单位为像素。
maxRows:最大的行数,默认为无限。
margin:项目的空白值,默认为[10, 10]。
isDraggable: 是否可拖拽。
isResizable: 是否可以变换尺寸。
isMirrored:默认从左到右排序,开启以后从右到左。
autoSize: 根据组件里的内容,自适应高度。
verticalCompact: 垂直方向上是否受影响,如果关闭的话,组件可以有空缺。
preventCollision: 避免碰撞,默认为false。
useCssTransforms
responsive
breakpoints
cols: 总的列数。
useStyleCursor:未知。
griditem的参数
i: 每个组件的唯一id,这个参数是必须的。
x:标识栅格元素位于第几列,需为自然数。
y:标识栅格元素位于第几行,需为自然数。
w:标识栅格元素的初始宽度,值为colWidth的倍数。
h:标识栅格元素的初始高度,值为rowHeight的倍数。
minW:栅格元素的最小宽度,值为colWidth的倍数。如果w小于minW,则minW的值会被w覆盖。
minH:栅格元素的最小高度,值为rowHeight的倍数。如果h小于minH,则minH的值会被h覆盖。
maxW栅格元素的最大宽度,值为colWidth的倍数。
如果w大于maxW,则maxW的值会被w覆盖。
maxH栅格元素的最大高度,值为rowHeight的倍数。
如果h大于maxH,则maxH的值会被h覆盖。
isDraggable:标识栅格元素是否可拖拽。如果值为null则取决于父容器。
isResizable:标识栅格元素是否可调整大小。如果值为null则取决于父容器。
static:标识栅格元素是否为静态的(无法拖拽、调整大小或被其他元素移动)。
dragIgnoreFrom:标识栅格元素中哪些子元素无法触发拖拽事件,值为css-like选择器。
dragAllowFrom:标识栅格元素中哪些子元素可以触发拖拽事件,值为css-like选择器。
如果值为null则表示所有子元素(dragIgnoreFrom的除外)。
resizeIgnoreFrom标识栅格元素中哪些子元素无法触发调整大小的事件,值为css-like选择器。
其他更多的官方说明,请参考https://jbaysolutions.github.io/vue-grid-layout/。