使用组件: vue-grid-layout
npm安装:
npm install vue-grid-layout@3.0.0-beta1
组件引用:
<template>
<grid-layout :layout.sync="testLayout" :col-num="24" :maxRows="12" :row-height="65" :is-draggable="true" :is-resizable="true" :vertical-compact="true" :use-css-transforms="true" :margin="[10, 10]">
<grid-item v-for="item in testLayout" :x="item.x" :y="item.y" :w="item.w" :h="item.h" :i="item.i" style="overflow: auto" @resized="reizedEvent" @moved="movedEvent">{{ item.i }}</grid-item>
</grid-layout>
</template>
<script>
import { ref } from 'vue'
import VueGridLayout from 'vue-grid-layout'
export default {
components: {
GridLayout: VueGridLayout.GridLayout,
GridItem: VueGridLayout.GridItem
},
setup(props) {
const testaLayout = ref([
{w: 6, h: 3, y: 6, x: 12, i: 3},
{w: 12, h: 6, y: 0, x: 0, i: 0},
{w: 6, h: 3, y: 9, x: 12, i: 4},
{w: 6, h: 3, y: 9, x: 18, i: 6},
{w: 12, h: 6, y: 0, x: 12, i: 1},
{w: 6, h: 3, y: 6, x: 18, i: 5},
{w: 12, h: 6, y: 6, x: 0, i: 2}
])
const resizedEvent = () => {
console.log("REIZE i=" + i + ", H=" + newH + ", W=" + newW + ", H(px)=" + newHPx + ", W(px)=" + newWPx)
}
const movedEvent = (i, newX, newY) => {
console.log('movedEvent', i, newX, newY)
}
return {
testaLayout,
resizedEvent,
movedEvent
}
}
}
</script>