最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
TinyVue Container 组件完全指南:五种版型撑起你的“应用骨架”
时间:2026-06-14 09:34:07 编辑:袖梨 来源:一聚教程网
开篇:别再手写 CSS 布局了,有它不香吗?
你有没有经历过这种折磨:接到一个后台管理系统需求,设计稿上白纸黑字画着——顶部导航栏、左侧菜单栏、右侧主内容区、底部状态栏。你一看,心想"这不就是经典的 header-aside-main-footer 四区域布局吗",然后打开了 CSS 文件,开始手写 flex/grid 布局。

半个小时后,你发现:
- aside 宽度写死了 200px,换了个菜单文字长一点就溢出
- footer 死活贴不到最下面,中间留了一大片空白
- header 高度改了之后,main 区域没有自动调整,得手动算
calc(100vh - 60px - 60px)
这不是写代码,这是"数字填空游戏"。
TinyVue 的 Container(容器布局)组件就是来终结这种手工活的。
它把应用级布局抽象成了五种预制版型,每个版型预设了 header、aside、main、footer 四个区域的位置关系。你只需要选一个版型,把内容塞进对应插槽,剩下的全部交给组件——宽度、高度、自适应,全自动。
1. 四大插槽:应用布局的"乐高积木"
Container 组件本质上是一个"布局容器",它提供了四个命名插槽,对应页面的四个区域:
| 插槽名 | 区域 | 说明 |
|---|---|---|
header | 头部 | 顶部导航栏、标题栏等 |
aside | 侧边栏 | 左侧菜单、导航树等 |
default | 主内容区 | 页面核心内容(不用写 #default,直接放子元素即可) |
footer | 底部 | 状态栏、版权信息等 |
复制代码<template>
<tiny-container pattern="legend">
<template #header>
<div>顶部导航栏</div>
</template>
<template #aside>
<div>左侧菜单</div>
</template>
<div>主内容区域(自动填充剩余空间)</div>
<template #footer>
<div>底部版权信息</div>
</template>
</tiny-container>
</template><script setup>
import { TinyContainer } from '@opentiny/vue'
</script>
四个插槽,四个区域,干净利落。main 区域不需要任何插槽名——直接把内容作为 Container 的子元素放进去就好,它会自动填满 header、aside、footer 之外的所有空间。
2. 五种版型:一个属性切换布局风格
pattern 属性是 Container 的灵魂——它决定了四个区域之间的位置关系和显隐状态。TinyVue 内置了五种版型,覆盖了绝大多数后台管理系统的布局需求:
2.1 default(默认版型)
四区域全展示——header 在上、aside 在左、main 居中、footer 在下。这是最经典的后台布局,适合大多数管理后台。
复制代码<tiny-container pattern="default">
<template #header><div>Header</div></template>
<template #aside><div>Aside</div></template>
<div>Main</div>
<template #footer><div>Footer</div></template>
</tiny-container>
想象一下:你的邮箱客户端。顶部是搜索栏和操作按钮(header),左侧是邮件文件夹(aside),中间是邮件列表(main),底部可能是存储用量提示(footer)。这就是 default。
2.2 classic(经典版型)
同样展示四个区域,但布局方式与 default 不同。适合需要不同视觉层次感的管理界面。
复制代码<tiny-container pattern="classic">
<template #header><div>Header</div></template>
<template #aside><div>Aside</div></template>
<div>Main</div>
<template #footer><div>Footer</div></template>
</tiny-container>
2.3 simple(简约版型)
去掉 aside,只保留 header、main、footer 三区域。适合不需要侧边栏的简洁型应用。
复制代码<tiny-container pattern="simple">
<template #header><div>Header</div></template>
<div>Main(没有 aside,空间更宽敞)</div>
<template #footer><div>Footer</div></template>
</tiny-container>
适用场景:官网后台的活动配置页、简单的数据展示页、移动端适配页面等。
2.4 fashion(时尚版型)
带侧边栏的另一种布局风格,aside 的展示方式与 default/classic 不同,适合追求更现代视觉效果的应用。
复制代码<tiny-container pattern="fashion">
<template #header><div>Header</div></template>
<template #aside><div>Aside</div></template>
<div>Main</div>
<template #footer><div>Footer</div></template>
</tiny-container>
2.5 legend(传奇版型)
四区域全展示,但区域的排列组合独具特色。适合复杂的、需要充分展示信息的管理后台。
复制代码<tiny-container pattern="legend">
<template #header><div>Header</div></template>
<template #aside><div>Aside</div></template>
<div>Main</div>
<template #footer><div>Footer</div></template>
</tiny-container>
复制代码<template>
<tiny-radio-group v-model="pattern">
<tiny-radio label="default">默认</tiny-radio>
<tiny-radio label="classic">经典</tiny-radio>
<tiny-radio label="simple">简约</tiny-radio>
<tiny-radio label="fashion">时尚</tiny-radio>
<tiny-radio label="legend">传奇</tiny-radio>
</tiny-radio-group> <tiny-container :pattern="pattern">
<div>主内容区域</div>
<template #header><div>Header</div></template>
<template #aside><div>Aside</div></template>
<template #footer><div>Footer</div></template>
</tiny-container>
</template><script setup>
import { ref } from 'vue'
import { TinyContainer, TinyRadio, TinyRadioGroup } from '@opentiny/vue'const pattern = ref('default')
</script>
3. 尺寸调节:精准控制每个区域的身高和腰围
默认尺寸不合适?Container 提供了三个属性让你精确调节:
| 属性 | 类型 | 默认值 | 控制区域 |
|---|---|---|---|
header-height | number | string | 60 | 头部高度(px) |
footer-height | number | string | 60 | 底部高度(px) |
aside-width | number | string | 200 | 左侧宽度(px) |
复制代码<template>
<tiny-container
pattern="legend"
:header-height="80"
:footer-height="80"
:aside-width="200"
>
<template #header>
<div class="center-text">header-height:80px</div>
</template>
<template #aside>
<div class="center-text">aside-width:200px</div>
</template>
<div class="center-text">Main 自动填充剩余空间</div>
<template #footer>
<div class="center-text">footer-height:80px</div>
</template>
</tiny-container>
</template><script setup>
import { ref } from 'vue'
import { TinyContainer } from '@opentiny/vue'
</script>
关键点:main 区域的宽高是自适应的——它会自动计算并填充 header + aside + footer 之外的所有空间。你不需要手动写 calc(),不需要管 overflow,Container 全帮你搞定了。
支持动态绑定:
复制代码<tiny-container
:header-height="isExpanded ? 120 : 60"
:aside-width="menuCollapsed ? 60 : 200"
/>
比如你可以做一个"菜单折叠"功能——折叠时 aside 缩到 60px 只显示图标,展开时恢复到 200px。一行属性绑定,不用改任何 CSS。
4. 版型对比速查表
不知道选哪个版型?看这张表:
| 版型 | 有 Header | 有 Aside | 有 Footer | 适用场景 |
|---|---|---|---|---|
default | 通用后台管理系统 | |||
classic | 传统企业管理系统 | |||
simple | 简洁应用、无侧边栏场景 | |||
fashion | 现代风格管理界面 | |||
legend | 复杂信息展示型后台 |
5. 实战技巧:Container + Layout 组合拳
Container 负责的是"宏观布局"——header/aside/main/footer 的大框架。如果你需要在 main 区域内部再做精细的栅格布局,可以和 TinyVue 的 Layout(栅格布局) 组件搭配使用:
复制代码<template>
<tiny-container pattern="default" :header-height="60" :aside-width="240">
<template #header>
<div>顶部导航栏</div>
</template>
<template #aside>
<div>侧边菜单</div>
</template>
<!-- main 区域使用 Layout 做栅格布局 -->
<tiny-layout>
<tiny-row>
<tiny-col :span="8"><div>左面板</div></tiny-col>
<tiny-col :span="8"><div>中间内容</div></tiny-col>
<tiny-col :span="8"><div>右面板</div></tiny-col>
</tiny-row>
</tiny-layout>
<template #footer>
<div>版权信息 © 2026</div>
</template>
</tiny-container>
</template><script setup>
import { TinyContainer, TinyLayout, TinyRow, TinyCol } from '@opentiny/vue'
</script>
分工明确:Container 管"四大区域的骨架",Layout 管"内容区内部的栅格排版"。两者各司其职,组合起来就是一个完整的管理后台布局方案。
6. 样式定制:用 CSS 变量拿捏外观
Container 组件使用了 TinyVue 的 CSS 变量体系,你可以通过全局 CSS 变量或 scoped 样式来定制外观:
复制代码/* 给 header 加上品牌色背景 */
.tiny-container :deep(.tiny-container__header) {
background-color: var(--tv-color-info-bg-light, #0067d1);
color: var(--tv-color-info-text, #fff);
}/* 给 aside 加上半透明效果 */
.tiny-container :deep(.tiny-container__aside) {
background-color: var(--tv-color-error-bg-light, #0067d180);
}/* 给 main 区域加上淡背景 */
.tiny-container :deep(.tiny-container__main) {
background-color: var(--tv-color-warn-bg-light, #0067d133);
}
CSS 变量的好处是:配合 ConfigProvider 的 theme 属性,你可以做运行时主题切换——换一套 CSS 变量值,整个布局的颜色就跟着变,完全不需要重新编译。
总结:Container 该不该用?
| 场景 | 是否推荐 |
|---|---|
| 后台管理系统的整体布局 | 强烈推荐 |
| 需要 header/aside/footer 四区域布局 | 必用 |
| 只要简单的上下两栏布局 | ️ 用 flex 就够了 |
| 页面内部的局部布局 | 用 Layout(栅格布局) |
| 需要动态切换版型风格 | 用 pattern + v-model |
| 需要菜单折叠/展开功能 | 动态绑定 aside-width |
Container 的核心价值就一句话:把"应用级布局"这个重复劳动从手写 CSS 变成选版型 + 填插槽。
你不再需要对着设计稿算像素、写 display: flex、处理 overflow——Container 帮你把这些脏活累活全干了。五种版型覆盖了绝大多数后台场景,三个尺寸属性满足精细化控制,main 区域自适应让你彻底告别 calc() 地狱。
选个版型,塞进内容,收工。
OpenTiny NEXT 是一套企业智能前端开发解决方案,以生成式 UI 和 WebMCP 两大核心技术为基础,对现有传统的 TinyVue 组件库、TinyEngine 低代码引擎等产品进行智能化升级,构建出面向 Agent 应用的前端 NEXT-SDKs、AI Extension、TinyRobot智能助手、GenUI等新产品,实现AI理解用户意图自主完成任务,加速企业应用的智能化改造。 欢迎加入 OpenTiny 开源社区。添加微信小助手:opentiny-official 一起参与交流前端技术~
OpenTiny 官网:opentiny.design
TinyVue 代码仓库: (欢迎star ⭐)
相关文章
- 零一万物怎么用?6月办公场景3种方法 06-14
- 百川智能新手教程怎么用?3种场景设置技巧 06-14
- 广汽传祺app怎么预约保养 广汽传祺app预约保养方法 06-14
- 月之暗面低成本替代方案:如何用更低预算获得相近效果?4步筛选法 06-14
- 月之暗面开发者最佳实践:2026年API集成的6项配置检查 06-14
- 《影子武士3技能推荐攻略》(掌握技能搭配,成为无敌武士!) 06-14