引入
npm install vue-grid-layout --save
<template>
<div>
<grid-layout :layout.sync="layout"
:col-num="colNum"
:row-height="30"
:is-draggable="draggable"
:is-resizable="resizable"
:vertical-compact="true"
:use-css-transforms="true"
>
<grid-item v-for="(item, key) in layout" :key="key"
:static="item.static"
:x="item.x"
:y="item.y"
:w="item.w"
:h="item.h"
:i="item.i"
>
</grid-item>
</grid-layout>
</div>
</template>
<script>
import {GridLayout, GridItem} from "vue-grid-layout"
export default {
components: {
GridLayout,
GridItem
},
data() {
return {
layout: [
{x: 0, y: 0, w: 4, h: 5, i: "0"},
{x: 2, y: 0, w: 4, h: 5, i: "1"},
{x: 4, y: 0, w: 4, h: 5, i: "2"},
{x: 6, y: 0, w: 4, h: 5, i: "3"},
{x: 8, y: 0, w: 4, h: 5, i: "4"},
],
draggable: true,
resizable: true,
colNum: 12,
}
},
mounted() {
},
methods: {}
}
</script>
<style>
*{touch-action: none}
</style>
grid-layout
参数/回调 | 说明 | 类型 | 默认值 | 备注 |
---|
:layout.sync="layout" | 网格初始化布局 | [{}] | 必填 | 每一项都必须具有i、x、y、w和h属性 |
:col-num="12" | 表示网格有多少列 | number | 12 | |
:row-height="30" | 表示一行的高度(以像素为单位) 数字 | number | 150 | |
:maxRows="20" | 表示网格中最大行数 | number | ∞ | |
:is-draggable="true" | 表示网格项数是否可以拖动 | bool | true | |
:is-resizable="true" | 表示网格是否可以改变带大小 | bool | true | |
:is-mirrored="false" | RTL/LTR 的转换 | bool | false | |
:autoSize="ture" | 容器是否适应内部变化 | bool | true | |
:vertical-compact="true" | 垂直方向上是否应该紧凑布局 | bool | true | |
:margin | 网格之间的边距 | number[] | [10,10] | 第一个数字为水平距离,第二个为垂直距离 |
:use-css-transforms | 是否使用 css 的 transforms 来排版 | bool | true | 使用后采用定位方式来布局 |
:responsive | 布局是否应响应窗口宽度 | bool | false | 为 true 时会出现一些布局错乱的问题 |
:breakpoints | 布局是否应响应为响应布局定义的窗口宽度断点 | {} | { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 } | |
:cols | 定义每个断点的列数 | {} | { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 } | |
@layout-created | 布局创建事件 | | | |
@layout-before-mount | 布局安装前置事件 | | | |
@layout-mounted | 布局安装事件 | | | |
@layout-ready | 布局准备活动 | | | |
@layout-updated | 格子位置大小更新 | | | |
grid-item
参数/回调 | 说明 | 类型 | 备注 |
---|
:x | 横向距离 | number | |
:y | 纵向距离 | number | |
:w | 宽度 | number | |
:h | 高度 | number | |
:i | ID,唯一值 | string | 重复设置时会导致一起放大或缩小 |
@resize | 当被放大缩小触发的事件 | | |
@move | 移动时触发的事件 | | |
@resized | 放大缩小结束时触发事件 | | 必须当大小相对上一次发生改变结束时才会触发 |
@moved | 移动结束触发 | | 只有当位置相对上一次发生改变才会触发 |