共计 1976 个字符,预计需要花费 5 分钟才能阅读完成。
因为常常须要做一些动静布局,做了个 vue 动静布局组件 slot-layout
,分享下。
- 组件地址:
https://github.com/hzsrc/slot… - 装置形式:
npm i slot-layout
这个组件基于一个布局配置对象,通过调整布局配置对象,最终通过映射到对应的 vue 组件插槽,来动静进行页面布局,布局和配置比拟不便。
个性
- 通过 js 布局对象,齐全管制页面布局。
- 特地适宜用于低代码平台零碎,只需在运行时依照须要动静传入一个布局配置对象,即可随便调整页面布局。无需事后编写布局代码。
- 反对多层布局嵌套,可实现任意数目、任意档次的布局。
- 反对任意长度单位,如 px、vw、%、rem。
- 反对填充式布局。即区块填充斥父容器。
- 组件自带布局配置性能,可轻松实现布局设计。
用法举例如下:
1、简略例子(单层、两个子节点):
查看成果:https://codepen.io/hzsrc/pen/…
<template>
<slot-layout class="full" :layout="layout">
<div slot="left" class="blk f-center">
left
</div>
<div slot="right" class="blk f-center">
<button @click="layout.isVertical=!layout.isVertical"> 动静调整布局 </button>
</div>
</slot-layout>
</template>
<script>
import slotLayout from "https://cdn.skypack.dev/slot-layout@1.0.4";
export default {
components:{slotLayout},
data(){
return {
// 布局配置对象
layout: {
aySize: '100%',
isVertical: false,
children: [{slot: 'left', laySize: '60px'},
{slot: 'right', laySize: 'fill'}
]
}
}
}
};
</script>
2、简单的例子:
查看成果
<template>
<div class="full">
<layout-designer v-if="isDesign" class="full" :layout="layout" show-result></layout-designer>
<slot-layout v-else class="full pd-10" :layout="layout" gulp="5px">
<aside slot="tree" class="full f-center">aside</aside>
<header slot="top" class="full f-center">header</header>
<nav slot="title" class="full f-center">
<button @click="resetLayout"> 动静调整布局 </button>
</nav>
<div slot="right" class="full f-center">right</div>
<div slot="bottom" class="full f-center">bottom</div>
</slot-layout>
<a class="absolute" @click="isDesign=!isDesign">{{isDesign ? '运行布局' : '设计布局'}}</a>
</div>
</template>
<script>
import slotLayout from 'slot-Layout'
import LayoutDesigner from 'slot-Layout/src/design/layoutDesigner';
export default {
name: 'slotLay',
data() {
return {
isDesign: true,
layout: {
isVertical: false,
laySize: '100%',
children: [
{
laySize: '15vw',
slot: 'tree',
},
{
laySize: 'fill',
isVertical: true,
children: [
{
slot: 'title',
laySize: '60px'
},
{
slot: 'top',
laySize: '30%',
},
{
slot: 'bottom',
laySize: 'fill',
}
]
},
{
laySize: '100px',
slot: 'right',
},
]
}
}
},
methods: {resetLayout() {this.layout.children.reverse()
}
},
components: {
LayoutDesigner,
slotLayout
}
}
</script>
正文完
发表至: javascript
2021-09-05