vue-grid-layout
- 实现功能:可拖拽页面组件位置及改变其大小
安装
npm install vue-grid-layout@2.3.9--save
使用
<template>
<grid-layout
:layout="LayoutData"
:auto-size="false"//容器自动调整大小,默认true
:col-num="12"//栅格的数量,默认12
:row-height="20"//行高,默认150,值越小,越精确
:is-draggable="true"//拖拽,默认true
:is-resizable="false"//改变大小,默认true
:margin="[20, 20]"//值必须是包含两个 Number的数组,数组中第一个元素表示水平边距,第二个表示垂直边距,单位为像素;
:use-css-transforms="true" //是否使用CSS属性,默认true
:use-style-cursor="false"//是否使用动态鼠标指针样式。当拖动出现卡顿时,将此值设为 false也许可以缓解布局问题
>
<grid-item
v-for="item in layoutList"
:key="item.i"
:x="item.x"//水平相对位置,Number,必填
:y="item.y"//垂直相对位置,Number,必填
:w="item.w"//宽度,Number,必填,col-num倍数
:h="item.h"//高度,Number,必填,row-height倍数
:i="item.i"//String,必填
:minW="item.minW"//最小宽度,值为colWidth的倍数
:minH="item.minH"//最小高度,值为rowHeight的倍数
:maxW="item.maxW"//最大宽度,值为colWidth的倍数
:maxH="item.maxH"//最大高度,值为rowHeight的倍数
@resize="resizeEvent"//大小改变事件
@move="moveEvent"//位置移动事件
@resized="resizedEvent"//大小改变结束事件
@moved="movedEvent"//位置移动结束事件
>
<div v-if="item.id == 1"></div>
<div v-if="item.id == 2"></div>
<div v-if="item.id == 3"></div>
</grid-item>
</grid-layout>
</template>
<script>
import Vue from 'vue'
import VueGridLayout from 'vue-grid-layout'
Vue.use(VueGridLayout);
export default {
name: 'gridLayout;,
data() {
return {
layoutList: [
{"x":0,"y":0,"w":8,"h":10,"i":0},
{"x":0,"y":12,"w":8,"h":10,"i":1},
{"x":8,"y":0,"w":4,"h":20,"i":2}
];
}
},
methods: {
resizeEvent(i, newH, newW) {
console.log('i', i);
console.log('H', newH);
console.log('W', newW);
},
moveEvent(i, newH, newW) {
console.log('i', i);
console.log('H', newH);
console.log('W', newW);
},
resizedEvent(i, newH, newW) {
console.log('i', i);
console.log('H', newH);
console.log('W', newW);
},
movedEvent(i, newH, newW) {
console.log('i', i);
console.log('H', newH);
console.log('W', newW);
},
}
版权声明:本文为weixin_42874979原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。