基础

间距

设置组件之间的间距。

代码演示

如何引入

<script lang="ts">
    import { Space } from '@fibrae/semi-ui-svelte';
</script>

基本用法

代码
<script lang="ts">
    import { Button, Space, Switch } from '@fibrae/semi-ui-svelte';
</script>

<Space>
    <Switch aria-label="示例开关" checked />
    <Button type="secondary">次要</Button>
    <Button type="tertiary">第三</Button>
    <Button type="warning">警告</Button>
</Space>

对齐方式

可使用 align 设置对齐方式,可选值:start、center(默认)、end、baseline。

文本
标签
文本
标签
文本
标签
文本
标签
代码
<script lang="ts">
    import { Button, Space, Tag } from '@fibrae/semi-ui-svelte';

    const aligns = ['start', 'center', 'end', 'baseline'] as const;
    const boxStyle = 'width: 80px; height: 100px; display: flex; align-items: center; justify-content: center; border: 1px solid var(--semi-color-border); border-radius: 3px';
</script>

<Space vertical>
    {#each aligns as align (align)}
        <Space {align}>
            <div style={boxStyle}>文本</div>
            <Button theme="solid" type="primary">按钮</Button>
            <Tag color="green" size="large">标签</Tag>
        </Space>
    {/each}
</Space>

间距尺寸

可使用 spacing 设置间距大小,内置可选值:tight(8px,默认)、medium(16px)、loose(24px),并且支持传入 number 来自定义间距大小,也支持传入 array 来同时设置水平和垂直方向的间距。

tight

medium

loose

array

代码
<script lang="ts">
    import { Button, Space } from '@fibrae/semi-ui-svelte';

    const presets = ['tight', 'medium', 'loose'] as const;
    const four = [1, 2, 3, 4];
    const ten = Array.from({ length: 10 }, (_, index) => index);
</script>

<!-- Tabs is not ported to Svelte yet, so the four spacing variants are stacked with plain headings -->
{#each presets as preset (preset)}
    <h4>{preset}</h4>
    <Space spacing={preset} style="margin-top: 15px">
        {#each four as item (item)}
            <Button theme="solid" type="primary">按钮</Button>
        {/each}
    </Space>
{/each}
<h4>array</h4>
<Space spacing={[8, 16]} style="margin-top: 15px" wrap>
    {#each ten as item (item)}
        <Button theme="solid" type="primary">按钮</Button>
    {/each}
</Space>

间距方向

可使用 vertical 设置间距是否为垂直方向,默认情况下为 false。

代码
<script lang="ts">
    import { Button, Space } from '@fibrae/semi-ui-svelte';

    const items = [1, 2, 3, 4];
</script>

<Space vertical>
    {#each items as item (item)}
        <Button theme="solid" type="primary">按钮</Button>
    {/each}
</Space>

设置换行

当间距为水平方向时,可使用 wrap 设置是否自动换行,默认情况下为 false。

代码
<script lang="ts">
    import { Button, Space } from '@fibrae/semi-ui-svelte';

    const items = Array.from({ length: 10 }, (_, index) => index);
</script>

<Space wrap>
    {#each items as item (item)}
        <Button theme="solid" type="secondary">按钮</Button>
    {/each}
</Space>

API参考

Props

属性说明类型默认值
align对齐方式,可选 start、center、end、baseline。Align"center"
children需要设置间距的子节点。Snippet-
spacing间距尺寸,可选 loose、medium、tight 或数字(像素);传入 [水平, 垂直] 数组分别设置两个方向。Spacing | [Spacing, Spacing]"tight"
vertical是否为垂直间距。booleanfalse
wrap是否自动换行,仅水平方向生效。booleanfalse

Space 直接渲染 children,不包裹额外元素;class、style 及其余原生属性和事件落在根 div 上。数字 spacing 按像素输出,style 字符串中的 column-gap、row-gap 优先于数字 spacing。

设计变量

下表是组件内部的 Sass 变量,不能覆写。定制样式请覆写 --semi-* CSS 变量(见 Design Token 页),或写不分层的 CSS 规则。
Sass 变量值用法
$spacing-space-tight$spacing-tight默认间距尺寸
$spacing-space-medium$spacing-base中等间距尺寸
$spacing-space-loose$spacing-loose宽松间距尺寸