布局工具

stack / divider / surface / text / grid / center / container / aspect / visually-hidden 全部工具类,无 JS。

stack 间距与分布

stack--gap-1(4px)

stack--gap-4(16px)

stack--gap-8(32px)

stack--justify-between

surface 三变体

默认 · inset 阴影
elevated · 卡片阴影
overlay · 强底浮层
surface--p-lg · padding 20px

text 字号 / 色档 / 截断

xs 11px · 辅助说明文字 sm 12px · 辅助说明文字 base 13px · 正文文字 md 14px · 正文文字 lg 15px · 强调文字 xl 18px · 小节标题 2xl 22px · 页面标题
muted faint accent success warning error
truncate · 这是一段会被省略号截断的超长文本内容

grid 三列

列一
列二
列三
列四
列五
列六

divider / center / aspect / visually-hidden

divider 水平 / 垂直

center 居中盒

居中内容

aspect 16:9 比例盒

16 : 9

visually-hidden(下句含一段只读给屏幕阅读器的文本)

评分 4.5 星,满分 5 星

<h3 class="demo-sub">stack 间距与分布</h3><div class="stack stack--gap-4">  <p class="demo-label">stack--gap-1(4px)</p>  <div class="stack stack--row stack--gap-1">    <span class="demo-box"></span><span class="demo-box"></span><span class="demo-box"></span>  </div>  <p class="demo-label">stack--gap-4(16px)</p>  <div class="stack stack--row stack--gap-4">    <span class="demo-box"></span><span class="demo-box"></span><span class="demo-box"></span>  </div>  <p class="demo-label">stack--gap-8(32px)</p>  <div class="stack stack--row stack--gap-8">    <span class="demo-box"></span><span class="demo-box"></span><span class="demo-box"></span>  </div>  <p class="demo-label">stack--justify-between</p>  <div class="stack stack--row stack--justify-between">    <span class="demo-box"></span><span class="demo-box"></span>  </div></div><h3 class="demo-sub">surface 三变体</h3><div class="grid grid--cols-3 grid--gap-16">  <div class="surface">默认 · inset 阴影</div>  <div class="surface surface--elevated">elevated · 卡片阴影</div>  <div class="surface surface--overlay">overlay · 强底浮层</div></div><div class="surface surface--p-lg" style="margin-top:12px">surface--p-lg · padding 20px</div><h3 class="demo-sub">text 字号 / 色档 / 截断</h3><div class="stack stack--gap-2">  <span class="text--xs">xs 11px · 辅助说明文字</span>  <span class="text--sm">sm 12px · 辅助说明文字</span>  <span class="text--base">base 13px · 正文文字</span>  <span class="text--md">md 14px · 正文文字</span>  <span class="text--lg">lg 15px · 强调文字</span>  <span class="text--xl">xl 18px · 小节标题</span>  <span class="text--2xl">2xl 22px · 页面标题</span>  <div class="stack stack--row stack--gap-3">    <span class="text--muted">muted</span>    <span class="text--faint">faint</span>    <span class="text--accent">accent</span>    <span class="text--success">success</span>    <span class="text--warning">warning</span>    <span class="text--error">error</span>  </div>  <div class="text--truncate" style="max-width:220px">truncate · 这是一段会被省略号截断的超长文本内容</div></div><h3 class="demo-sub">grid 三列</h3><div class="grid grid--cols-3 grid--gap-12">  <div class="demo-box">列一</div>  <div class="demo-box">列二</div>  <div class="demo-box">列三</div>  <div class="demo-box">列四</div>  <div class="demo-box">列五</div>  <div class="demo-box">列六</div></div><h3 class="demo-sub">divider / center / aspect / visually-hidden</h3><div class="stack stack--gap-4">  <p class="demo-label">divider 水平 / 垂直</p>  <div class="divider"></div>  <div class="stack stack--row stack--items-stretch stack--gap-3" style="height:36px">    <span class="demo-box"></span>    <div class="divider divider--vertical"></div>    <span class="demo-box"></span>  </div>  <p class="demo-label">center 居中盒</p>  <div class="center surface" style="height:64px">居中内容</div>  <p class="demo-label">aspect 16:9 比例盒</p>  <div class="aspect" style="max-width:320px"><div class="demo-fill center">16 : 9</div></div>  <p class="demo-label">visually-hidden(下句含一段只读给屏幕阅读器的文本)</p>  <p class="text--sm">评分 4.5 星<span class="visually-hidden">,满分 5 星</span></p></div>

安装

bun add @icen.ai/ui

一行引入该组件(CSS 与 behavior 自动带上,无需关心内部 CSS 文件名):

import '@icen.ai/ui/kit/layout';

也可以用脚手架直接打印引入行:

bunx --bun @icen.ai/ui add layout

Astro 项目注意:kit 入口里的 CSS import 在页面 <script> 里会被 Astro 的 client bundle 摇掉——请改在布局 frontmatter 里引 CSS(import '@icen.ai/ui/components/layout.css';),JS 行为仍可走 kit。Vite SPA / webpack 项目无此问题。

用法

<div class="stack stack--gap-4">纵向间距栈</div><div class="stack stack--row stack--justify-between">横向分布</div><div class="grid grid--cols-3 grid--gap-12">三列网格</div><div class="surface surface--elevated">浮起表面</div><span class="text--sm text--muted">辅助文字</span><div class="divider"></div>