Vue Grid Layout使用

安装使用

使用 vue3 开发

// 安装
npm install vue-grid-layout@3.0.0-beta1 --save
// 使用
import gridLayout from 'vue-grid-layout'
const app = createApp(App)
app.use(gridLayout)

页面中使用

 <grid-layout
 	ref="grid"
   :layout="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>

xitem 横向位置,
yitem 纵向位置,
witem 宽度,
hitem 高度,
iitem 索引,一定不能重复,如果重复了,拖动或调整时会影响 i 相同的 item
key 用来唯一标记 item ,一定不能重复,如果重复了,会出现样式覆盖,比如两个相同的 key,如果一个调整了宽高,当刷新时另一个也会受影响,这是由于vue更新时以 key 为主

ref="grid" 是获取grid组件,用来更新grid的高度
如果item可以动态增减,外层容器的高度就要跟着更新

const grid = ref(null)
// 监听 layout 的长度变化
watch(
	() => layout.length,
	() => {
		grid.value.updateHeight()
	}
)

updateHeightvue-grid-layout 组件中用来更新容器高度的方法

调整 item 的位置后 layout 数组的顺序默认不会调整,可以自己处理,grid-layout 上有个更新事件 layout-updated,在这个事件里重新排序

 <grid-layout
 	...
	@layout-updated="layoutUpdated"
	...
>

    <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>
const layoutUpdated = (newLayout) => {
	// 按照页面显示顺序排序,y 代表行,x 代表列,先按行排,再按列排
	newLayout.sort(a, b) => (a.y + '' + a.x) - (b.y + '' + b.x))
}

参考:
Vue Grid Layout -️ 适用Vue.js的栅格布局系统(保姆级使用教程)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue Grid Layout是一个可拖拽和可调整大小的网格布局组件,它可以帮助我们实现灵活可变的网格布局。在Vue Grid Layout中,我们可以很方便地添加和删除网格项,并且可以通过监听相关事件来进行相应的处理。 要添加一个网格项,我们可以使用Vue Grid Layout提供的`addItem`方法。该方法接受一个包含网格项的配置对象作为参数,配置对象中包括网格项的id、x和y轴的坐标、宽度和高度等信息。我们可以在需要添加网格项的地方调用`addItem`方法来动态添加网格项。 例如,我们可以在点击一个按钮的事件处理函数中调用`addItem`方法,将一个新的网格项添加到网格布局中。具体的代码可以如下所示: ```javascript methods: { handleAddItem() { const newItem = { id: 'new-item', x: 0, y: 0, w: 2, h: 2 }; this.$refs.gridLayoutRef.addItem(newItem); } } ``` 要删除一个网格项,我们可以使用Vue Grid Layout提供的`removeItem`方法。该方法接受一个网格项的id作为参数,我们可以通过id来指定要删除的网格项。同样地,在需要删除网格项的地方调用`removeItem`方法即可完成删除。 例如,我们可以在点击某个网格项的删除按钮的事件处理函数中调用`removeItem`方法,将该网格项从网格布局中移除。具体的代码可以如下所示: ```javascript methods: { handleRemoveItem(itemId) { this.$refs.gridLayoutRef.removeItem(itemId); } } ``` 通过这样的方式,我们可以很方便地添加和删除Vue Grid Layout中的网格项,实现动态的网格布局操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值