容器

容器把内容居中、给宽度封顶让文字行保持易读,并留出一圈边距,免得在手机上有东西贴到屏幕边缘。它通常是 body() 里的第一样东西。

基础容器

里面的一切都保持居中,到了尺寸上限就不再变宽。

container(
  text({ variant: 'lead' }, '里面的一切都保持居中,到了尺寸上限就不再变宽。'),
)

尺寸

五档,从单栏可读宽度一直到完全不限。sm 大约是 40rem——差不多就是正文想要的宽度。

sm — 40rem

md — 56rem

lg — 72rem(默认)

stack({ gap: 'sm' },
  container({ size: 'sm', style: 'background: var(--su-surface-2); padding-block: 0.75rem' },
    text({ variant: 'small', align: 'center' }, 'sm — 40rem'),
  ),
  container({ size: 'md', style: 'background: var(--su-surface-2); padding-block: 0.75rem' },
    text({ variant: 'small', align: 'center' }, 'md — 56rem'),
  ),
  container({ size: 'lg', style: 'background: var(--su-surface-2); padding-block: 0.75rem' },
    text({ variant: 'small', align: 'center' }, 'lg — 72rem(默认)'),
  ),
)

自定义宽度

width 接受任意 CSS 长度,并盖过 size,留给那种尺度里没有的特殊页面。

width: 30rem

container({ width: '30rem', style: 'background: var(--su-surface-2); padding-block: 0.75rem' },
  text({ variant: 'small', align: 'center' }, 'width: 30rem'),
)

边距

边距是内容与视口边缘之间保留的内边距。它接受一个间距令牌、若干个间距单位,或者一个原始长度值。

更宽的边距,适合那种在平板上内容不该顶到边缘的页面。

container({ size: 'sm', gutter: 'xl', style: 'background: var(--su-surface-2); padding-block: 0.75rem' },
  text({ variant: 'small' }, '更宽的边距,适合那种在平板上内容不该顶到边缘的页面。'),
)

渲染为其他元素

as 只换标签,其余一概不变——当容器同时也是页面的 <main> 或某个 <section> 时很有用。

一个 main 元素

布局一样,地标正确。

container({ as: 'main', size: 'md' },
  heading({ level: 2, size: 'h4' }, '一个 main 元素'),
  text({ tone: 'muted' }, '布局一样,地标正确。'),
)

属性

属性类型默认值说明
size'sm' | 'md' | 'lg' | 'xl' | 'full''lg'采用哪一档宽度上限。
widthstring—原始的 max-width,会盖过 size。
gutterSpace'md'与视口边缘之间保留的横向内边距。
asstring'div'渲染成哪个元素,例如 main 或 section。