布局工具
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 · 卡片阴影
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 pnpm add @icen.ai/ui npm install @icen.ai/ui yarn 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>