Skip to content
On this page

组件库文档 tmui.design

布局 Row

你可以用来排版,排列,九宫格等需要排版布局时非常有用。比如自己作表格等。 它是按12列划分的,当然也可以通过属性更改列数哦。

特别注意:从3.0.89开始使用了新的布局方式,并且不会向下兼容,更新后比之前布局变得非常的简单


🌶️ 布局 Row 示例

查看模拟效果
示例模板
vue
<template>
	<tm-app>
		<tm-sheet color="primary" :round="3" :shadow="2">
			<tm-text
				:font-size="24"
				label="从3.0.89开始,重新设置row,col的计算方式.如果不指定总宽的时候内容宽度是自动以父级为宽,但这会消耗性能,建议指定总宽度."
			>
			</tm-text>
		</tm-sheet>

		<view class="px-32">
			<tm-row :width="686" :column="10">
				<tm-col :borderGutter="[0, 0, 2, 0]" :col="2">
					<tm-text label="2"></tm-text>
				</tm-col>
				<tm-col :borderGutter="[0, 0, 2, 0]" :col="1">
					<tm-text label="1"></tm-text>
				</tm-col>
				<tm-col :borderGutter="[0, 0, 2, 0]" :col="2">
					<tm-text label="2"></tm-text>
				</tm-col>
				<tm-col :borderGutter="[0, 0, 2, 0]" :col="4">
					<tm-text label="4"></tm-text>
				</tm-col>
				<tm-col :col="1">
					<tm-text label="1"></tm-text>
				</tm-col>
				<tm-col :borderGutter="[0, 2, 0, 2]" :col="10">
					<tm-text label="10"></tm-text>
				</tm-col>
				<tm-col :borderGutter="[0, 0, 0, 2]" _class="flex flex-row flex-row-center-center" :col="10" color="primary">
					<view class="flex-1 flex flex-row flex-row-center-center">
						<tm-text label="这里是演示如何让col内容100%宽度."></tm-text>
					</view>
				</tm-col>
				<tm-col :borderGutter="[0, 0, 2, 0]" _class="flex flex-row flex-row-center-center" :col="3" :height="80">
					<view class="flex-1 flex flex-row flex-row-center-center">
						<tm-text label="3"></tm-text>
					</view>
				</tm-col>
				<tm-col :col="7" :height="80" align="center">
					<view class="flex-1 yellow">
						<tm-text label="高100%,学会了吗?"></tm-text>
					</view>
				</tm-col>
			</tm-row>
		</view>

		<tm-sheet>
			<tm-text :font-size="28" _class="text-weight-b" label="下面的示例,未指定row的宽度,是自动计算的.只要指定col属性的列就行."></tm-text>
			<tm-text
				color="red"
				:font-size="24"
				_class="text-weight-b"
				label="未指定row宽时,性能会有相应的损耗.下面在微信端明显能感觉到显示速度要比上方和下方的布局要慢一点,你查看到了吗?(土豪手机请略过)"
			></tm-text>
			<tm-divider></tm-divider>
			<tm-row :gutter="0" :column="12">
				<tm-col color="red" align="start" :col="4">
					<tm-text label="左4"></tm-text>
				</tm-col>
				<tm-col color="green" :col="4">
					<tm-text label="中4"></tm-text>
				</tm-col>
				<tm-col color="blue" align="end" :col="4">
					<tm-text label="右4"></tm-text>
				</tm-col>
				<tm-col :margin="[0, 2]" color="orange" align="center" :col="12">
					<tm-text label="一行12"></tm-text>
				</tm-col>
				<tm-col :margin="[0, 0, 0, 2]" color="blue" align="center" :col="4">
					<tm-text label="左4"></tm-text>
				</tm-col>
				<tm-col :margin="[2, 0, 0, 2]" color="white" align="start" :col="8">
					<tm-row :gutter="0" :column="12">
						<tm-col color="blue-grey" align="center" :col="4">
							<tm-text label="嵌套-4"></tm-text>
						</tm-col>
						<tm-col :margin="[2, 0, 2, 0]" color="red" align="center" :col="3">
							<tm-text label="嵌套-3"></tm-text>
						</tm-col>
						<tm-col color="grey" align="center" :col="5">
							<tm-text label="嵌套-5"></tm-text>
						</tm-col>
					</tm-row>
				</tm-col>
				<tm-col color="red" :col="2">
					<tm-text label="2"></tm-text>
				</tm-col>
				<tm-col color="green" :col="3">
					<tm-text label="3"></tm-text>
				</tm-col>
				<tm-col color="blue" :col="4">
					<tm-text label="4"></tm-text>
				</tm-col>
				<tm-col color="green" :col="3">
					<tm-text label="3"></tm-text>
				</tm-col>
			</tm-row>
		</tm-sheet>

		<tm-sheet :margin="[32, 0]">
			<tm-text :font-size="24" _class="text-weight-b" label="下方是指定了gutter,和row的宽度,并且更改了最大列数为3,性能会更好."></tm-text>
			<tm-divider></tm-divider>
			<tm-row :width="638" :column="3" color="blue-grey" :gutter="5">
				<tm-col color="green">
					<tm-text label="3"></tm-text>
				</tm-col>
				<tm-col :margin="[4, 0]" color="red">
					<tm-text label="文本"></tm-text>
				</tm-col>
				<tm-col color="blue">
					<tm-text label="文本"></tm-text>
				</tm-col>
			</tm-row>
		</tm-sheet>
	</tm-app>
</template>
<script lang="ts" setup>
import tmApp from '@/tmui/components/tm-app/tm-app.vue'
import tmSheet from '@/tmui/components/tm-sheet/tm-sheet.vue'
import tmText from '@/tmui/components/tm-text/tm-text.vue'
import tmRow from '@/tmui/components/tm-row/tm-row.vue'
import tmCol from '@/tmui/components/tm-col/tm-col.vue'
import tmDivider from '@/tmui/components/tm-divider/tm-divider.vue'
import tmImage from '@/tmui/components/tm-image/tm-image.vue'
</script>

🌶️ 兼容性

APP-VUEAPP-NVUE小程序WEB/H5VUE3/TS
✔️✔️✔️✔️✔️

🌱 参数

Row组件含有公共属性 公共属性,必须配合tmCol

我建议row上最好定义width,这样性能与原生无异 当外部宽度不可预测时,width可以不设置,即让组件自动检测宽度,这样适合少量元素的布局。不适合大量数据布局。

参数名类型默认值描述
height[Number]50高度,单位rpx,如果为0时,表示高度自动,不受限制。
marginArray<number>[0,0]外间距[x,y]x=左右,y=上下
width[Number]0,宽度,单位rpx
round[Number]0圆角0-25,单位rpx
gutterNumber0从3.0.89开始,此属性已经删除,请见col下的margin
columnNumber12
justifyStringstart可选值:start/center/end/around/between
alignStringcenter可选值:start/center/end/stretch
justifyStringcenter可选值:start/center/end/stretch
colorStringwhite颜色

🌱 Col组件参数

必须配置tmRow使用。否则报错。

参数名类型默认值描述
height[Number]50高度,单位rpx,如果为0时,表示高度自动,不受限制。
colorStringwhite颜色
transprent[Boolean,String]false是否透明
alignStringcenter可选值:start/center/end
colNumber1所占row中column的列数,这里默认占1列
marginArray<number>[0]四周的间隙,规则见公共属性margin
borderColorString'rgba(0,0,0,0.04)'边线的颜色
borderGutterArray<number>[0,0,0,0]四周的边线大小,顺序为:0左,1上,2右,3下

🌹 事件

事件名参数返回数据描述
@click--单元格点击时触发

🌽 slot插槽

默认default

🥗 ref方法

💏 文档贡献

此页文档由Sunlight贡献,如果对该框架感兴趣的可以参与我们一同进步!