ICEN UI 布局工具
Docs ⌘K
Core · 稳定

布局工具

零 JS 的布局工具类全集:堆叠、网格、容器、宽高比与可读性件。

Preview
导航 layout

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 星

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

特性

安装

bun add @icen.ai/ui

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

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

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

bash
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 项目无此问题。

用法

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