引入

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"表示网格有多少列number12
:row-height="30"表示一行的高度(以像素为单位) 数字number150
:maxRows="20"表示网格中最大行数number
:is-draggable="true"表示网格项数是否可以拖动booltrue
:is-resizable="true"表示网格是否可以改变带大小booltrue
:is-mirrored="false"RTL/LTR 的转换boolfalse
:autoSize="ture"容器是否适应内部变化booltrue
:vertical-compact="true"垂直方向上是否应该紧凑布局booltrue
:margin网格之间的边距number[][10,10]第一个数字为水平距离,第二个为垂直距离
:use-css-transforms是否使用 csstransforms 来排版booltrue使用后采用定位方式来布局
:responsive布局是否应响应窗口宽度boolfalsetrue 时会出现一些布局错乱的问题
: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
:iID,唯一值string重复设置时会导致一起放大或缩小
@resize当被放大缩小触发的事件
@move移动时触发的事件
@resized放大缩小结束时触发事件 必须当大小相对上一次发生改变结束时才会触发
@moved移动结束触发 只有当位置相对上一次发生改变才会触发