# Layout 布局
通过基础的 12 分栏,迅速简便地创建布局
注意
如需实现类似宫格的布局,请使用uView的Grid宫格组件,可以设置角标,功能更完善和灵活
# 平台差异说明
App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 头条小程序 | QQ小程序 |
---|---|---|---|---|---|---|
√ | √ | √ | √ | √ | √ | √ |
# 基本使用
通过col
组件的span
设置需要分栏的比例
<template>
<view class="wrap">
<u-row :justify="justify" @click="rowClick">
<u-col :span="span" :offset="offset" @click="click" stop>
<view class="demo-layout bg-purple-dark">
</view>
</u-col>
<u-col :span="span" :offset="offset">
<view class="demo-layout bg-purple-dark">
</view>
</u-col>
<u-col :span="span" :offset="offset">
<view class="demo-layout bg-purple-dark">
</view>
</u-col>
</u-row>
</view>
</template>
<script>
export default {
data() {
return {
span: 3,
offset: 0,
justify: 'start'
}
},
methods: {
click() {
console.log('col click');
},
rowClick() {
console.log('row click');
}
}
}
</script>
<style scoped lang="scss">
.demo-layout {
height: 70rpx;
border-radius: 8rpx;
margin: 20rpx 0;
}
.bg-purple {
background: #d3dce6;
}
.bg-purple-light {
background: #e5e9f2;
}
.bg-purple-dark {
background: #99a9bf;
}
// H5中,电脑端文档演示时,可能会导致演示块挤出边界,特别处理。
// 真实使用环境不会产生此问题
/* #ifdef H5 */
.u-demo-area /deep/ .u-row {
display: flex;
flex-wrap: wrap;
}
/* #endif */
</style>
# 分栏间隔
通过设置row
组件的gutter
参数,来指定每一栏之间的间隔(最终表现为左边内边距各为gutter/2),默认间隔为0
<u-row gutter="16">
<u-col span="3">
<view class="demo-layout bg-purple">
</view>
</u-col>
<u-col span="9">
<view class="demo-layout bg-purple-light">
</view>
</u-col>
</u-row>
# 分栏偏移
通过指定col
组件的offset
属性可以指定分栏偏移的栏数。
<u-row gutter="16">
<u-col span="3">
<view class="demo-layout bg-purple"></view>
</u-col>
<u-col span="3" offset="6">
<view class="demo-layout bg-purple-light"></view>
</u-col>
</u-row>
# 对齐方式
通过row
组件的justify
来对分栏进行灵活的对齐, 可选值为start
(或flex-start
)、end
(或flex-end
)、center
、around
(或space-around
)、between
(或space-between
), 其最终的表现类似于css的justify-content
属性。
注意:由于持微信小程序编译后的特殊结构,此方式不支持微信小程序。
<u-row gutter="16" justify="center">
<u-col span="3">
<view class="demo-layout bg-purple"></view>
</u-col>
<u-col span="3">
<view class="demo-layout bg-purple-light"></view>
</u-col>
</u-row>
# API
# Row Props
参数 | 说明 | 类型 | 默认值 | 可选值 |
---|---|---|---|---|
gutter | 栅格间隔,左右各为此值的一半,单位rpx | String | Number | 0 | - |
justify | 水平排列方式(微信小程序暂不支持) | String | start(或flex-start) | end(或flex-end) / center / around(或space-around) / between(或space-between) |
align | 垂直排列方式 | String | center | top / bottom |
# Col Props
参数 | 说明 | 类型 | 默认值 | 可选值 |
---|---|---|---|---|
span | 栅格占据的列数,总12等分 | String | Number | 0 | 1-12 |
offset | 分栏左边偏移,计算方式与span 相同 | String | Number | 0 | - |
text-align 1.5.5 | 文字水平对齐方式 | String | left | center / right |
# Row Events 1.4.3
事件名 | 说明 | 回调参数 |
---|---|---|
click | row 被点击 | - |
# Col Events 1.4.3
事件名 | 说明 | 回调参数 |
---|---|---|
click | col 被点击,会阻止事件冒泡到row | - |