Skip to content

Timeline 时间线 ​

以一条主线串联的流式信息展示组件,适用于构建企业发展里程碑、版本发布日志、以及任务审批进度流程。

预览 ​

Preview

垂直时间线 — 所有 Dot 变体

默认 (default) 变体

默认白底黑字圆点样式。

主要 (primary) 变体

珊瑚红主色圆点样式。

次要 (secondary) 变体

薄荷青辅助色方形样式。

强调 (accent) 变体

黄色强调色菱形样式。

成功 (success) 变体

绿色成功色圆点样式。

危险 (danger) 变体

红色危险色圆点样式。

水平时间线

需求分析
2026-06-01
设计开发
2026-06-15
测试发布
2026-07-01
迭代优化
2026-07-15

垂直交替布局 — alternate

立项启动

确定产品方向与核心目标。

设计开发

完成视觉设计与首轮开发。

测试验收

回归测试与性能调优。

正式发布

面向全量用户开放。

安装 ​

pnpm dlx brutx-vue@latest add timeline

用法 ​

vue
<script setup>
import {
    Timeline,
    TimelineItem,
    TimelineSeparator,
    TimelineDot,
    TimelineConnector,
    TimelineContent
} from 'brutx-ui-vue'
</script>

<template>
    <Timeline orientation="vertical">
        <!-- 节点 1 -->
        <TimelineItem>
            <TimelineSeparator>
                <TimelineDot variant="primary" shape="circle">1</TimelineDot>
                <TimelineConnector />
            </TimelineSeparator>
            <TimelineContent class="pl-2">
                <div class="font-black">第一阶段</div>
                <p class="font-normal text-sm mt-1">这里是第一阶段的信息说明。</p>
            </TimelineContent>
        </TimelineItem>
        
        <!-- 节点 2 -->
        <TimelineItem>
            <TimelineSeparator>
                <TimelineDot variant="accent" shape="square">2</TimelineDot>
            </TimelineSeparator>
            <TimelineContent class="pl-2">
                <div class="font-black">第二阶段</div>
                <p class="font-normal text-sm mt-1">这里是第二阶段的信息说明。</p>
            </TimelineContent>
        </TimelineItem>
    </Timeline>
</template>

水平时间线 ​

设置 orientation="horizontal" 可切换为水平布局。水平模式下建议在 TimelineContent 上添加 text-center 使文本与图标对齐:

vue
<template>
    <Timeline orientation="horizontal">
        <TimelineItem>
            <TimelineSeparator>
                <TimelineDot variant="primary" shape="circle">1</TimelineDot>
                <TimelineConnector />
            </TimelineSeparator>
            <TimelineContent class="text-center">
                <div class="font-black text-sm">需求分析</div>
                <div class="text-xs text-brutal-fg/60 mt-1">2026-06-01</div>
            </TimelineContent>
        </TimelineItem>

        <TimelineItem>
            <TimelineSeparator>
                <TimelineDot variant="accent" shape="square">2</TimelineDot>
                <TimelineConnector />
            </TimelineSeparator>
            <TimelineContent class="text-center">
                <div class="font-black text-sm">设计开发</div>
                <div class="text-xs text-brutal-fg/60 mt-1">2026-06-15</div>
            </TimelineContent>
        </TimelineItem>

        <TimelineItem>
            <TimelineSeparator>
                <TimelineDot variant="success" shape="circle">3</TimelineDot>
            </TimelineSeparator>
            <TimelineContent class="text-center">
                <div class="font-black text-sm">测试发布</div>
                <div class="text-xs text-brutal-fg/60 mt-1">2026-07-01</div>
            </TimelineContent>
        </TimelineItem>
    </Timeline>
</template>

交替布局 ​

设置 alternate 属性为 true 后,垂直时间线的内容会沿分隔线左右交替排列:偶数项(第 0、2、4... 项)内容在左侧,奇数项(第 1、3、5... 项)内容在右侧,形成对称的交替节奏。该属性仅在 orientation="vertical" 时生效,水平模式下会被自动忽略。

vue
<template>
    <Timeline orientation="vertical" alternate>
        <TimelineItem>
            <TimelineSeparator>
                <TimelineDot variant="primary" shape="circle">1</TimelineDot>
                <TimelineConnector />
            </TimelineSeparator>
            <TimelineContent class="pl-2">
                <div class="font-black text-base">立项启动</div>
                <p class="text-sm text-brutal-fg/80 mt-1 font-normal">确定产品方向与核心目标。</p>
            </TimelineContent>
        </TimelineItem>

        <TimelineItem>
            <TimelineSeparator>
                <TimelineDot variant="accent" shape="square">2</TimelineDot>
                <TimelineConnector />
            </TimelineSeparator>
            <TimelineContent class="pl-2">
                <div class="font-black text-base">设计开发</div>
                <p class="text-sm text-brutal-fg/80 mt-1 font-normal">完成视觉设计与首轮开发。</p>
            </TimelineContent>
        </TimelineItem>

        <TimelineItem>
            <TimelineSeparator>
                <TimelineDot variant="success" shape="diamond">3</TimelineDot>
                <TimelineConnector />
            </TimelineSeparator>
            <TimelineContent class="pl-2">
                <div class="font-black text-base">测试验收</div>
                <p class="text-sm text-brutal-fg/80 mt-1 font-normal">回归测试与性能调优。</p>
            </TimelineContent>
        </TimelineItem>

        <TimelineItem>
            <TimelineSeparator>
                <TimelineDot variant="danger" shape="circle">4</TimelineDot>
            </TimelineSeparator>
            <TimelineContent class="pl-2">
                <div class="font-black text-base">正式发布</div>
                <p class="text-sm text-brutal-fg/80 mt-1 font-normal">面向全量用户开放。</p>
            </TimelineContent>
        </TimelineItem>
    </Timeline>
</template>

说明

交替布局的索引由 Timeline 自动按 TimelineItem 出现顺序从 0 开始注入,无需手动指定;alternate 与 horizontal 同时设置时,水平模式优先生效,alternate 不会产生任何效果。

变体 ​

TimelineDot 支持多样化的新粗野主义几何设计与颜色主题,通过 shape 和 variant 进行自定义:

形状 (shape) ​

形状说明
circle经典的圆形小徽章
square方正的硬朗线条卡片
diamond斜向 45 度旋转的菱形(文字插槽内容会被内部自动反向微调,以防排版发生倾斜)

配色 (variant) ​

变体说明
default默认配色
primary主色
secondary辅助色
accent强调色
success成功色
danger危险色

子组件 ​

组件说明
Timeline根容器,管理布局方向和交替排列
TimelineItem单个时间节点
TimelineSeparator节点分隔区域,包含 Dot 和 Connector
TimelineDot节点徽标,支持形状和配色变体
TimelineConnector节点之间的连接线
TimelineContent节点内容区域

API 参考 ​

Timeline

Timeline — 属性
名称类型默认值说明
orientation
TimelineOrientation | undefined
"vertical"
设置时间线为垂直或水平排列;水平布局可横向滚动。
详情

声明类型

TimelineOrientation | undefined

字面量

  • "horizontal"
  • "vertical"

关联类型

TimelineOrientation
类型定义 — TimelineOrientation
export type TimelineOrientation = 'vertical' | 'horizontal'

默认值详情

解析值
"vertical"

来源

Timeline.vue:9

packages/ui/src/components/timeline/Timeline.vue

alternate
boolean | undefined
false
垂直方向下将相邻节点内容交替排列在轴线两侧。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

解析值
false

来源

Timeline.vue:10

packages/ui/src/components/timeline/Timeline.vue

class
string | undefined
undefined
追加到时间线外层列表容器的自定义 CSS 类。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

Timeline.vue:11

packages/ui/src/components/timeline/Timeline.vue

TimelineConnector

TimelineConnector — 属性
名称类型默认值说明
class
string | undefined
undefined
追加到时间线连接线元素的自定义 CSS 类。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

TimelineConnector.vue:7

packages/ui/src/components/timeline/TimelineConnector.vue

TimelineContent

TimelineContent — 属性
名称类型默认值说明
class
string | undefined
undefined
追加到时间线节点内容区域的自定义 CSS 类。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

TimelineContent.vue:6

packages/ui/src/components/timeline/TimelineContent.vue

TimelineContent — 插槽
名称签名或类型说明
#default
{}
渲染当前时间线节点的主要内容。
详情

声明类型

{}

来源

TimelineContent.vue

packages/ui/src/components/timeline/TimelineContent.vue

TimelineDot

TimelineDot — 属性
名称类型默认值说明
variant
"accent" | "danger" | "default" | "primary" | "secondary" | "success" | undefined
"accent"
设置节点标记的配色变体。
详情

声明类型

NonNullable<"default" | "primary" | "secondary" | "success" | "danger" | "accent" | null | undefined> | undefined

字面量

  • "accent"
  • "danger"
  • "default"
  • "primary"
  • "secondary"
  • "success"

默认值详情

解析值
"accent"

来源

TimelineDot.vue:10

packages/ui/src/components/timeline/TimelineDot.vue

shape
"circle" | "diamond" | "square" | undefined
"circle"
设置节点标记为圆形、方形或菱形。
详情

声明类型

NonNullable<"square" | "circle" | "diamond" | null | undefined> | undefined

字面量

  • "circle"
  • "diamond"
  • "square"

默认值详情

解析值
"circle"

来源

TimelineDot.vue:11

packages/ui/src/components/timeline/TimelineDot.vue

led
boolean | undefined
false
启用装饰性 LED 脉冲光晕;动画遵循减少动态效果偏好。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

解析值
false

来源

TimelineDot.vue:13

packages/ui/src/components/timeline/TimelineDot.vue

class
string | undefined
undefined
追加到节点标记元素的自定义 CSS 类。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

TimelineDot.vue:14

packages/ui/src/components/timeline/TimelineDot.vue

TimelineDot — 插槽
名称签名或类型说明
#default
{}
在节点标记内部展示数字、图标等内容。
详情

声明类型

{}

来源

TimelineDot.vue

packages/ui/src/components/timeline/TimelineDot.vue

TimelineItem

TimelineItem — 属性
名称类型默认值说明
index
number | undefined
undefined
时间线中的节点索引;作为 Timeline 直接子项时会自动按顺序注入,可显式传入覆盖。
详情

声明类型

number | undefined

默认值详情

解析值
undefined

来源

TimelineItem.vue:7

packages/ui/src/components/timeline/TimelineItem.vue

class
string | undefined
undefined
追加到单个时间线节点容器的自定义 CSS 类。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

TimelineItem.vue:8

packages/ui/src/components/timeline/TimelineItem.vue

TimelineItem — 插槽
名称签名或类型说明
#default
{}
组合放置 TimelineSeparator 与 TimelineContent。
详情

声明类型

{}

来源

TimelineItem.vue

packages/ui/src/components/timeline/TimelineItem.vue

TimelineSeparator

TimelineSeparator — 属性
名称类型默认值说明
class
string | undefined
undefined
追加到时间线轴线和标记所在分隔区域的自定义 CSS 类。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

TimelineSeparator.vue:7

packages/ui/src/components/timeline/TimelineSeparator.vue

TimelineSeparator — 插槽
名称签名或类型说明
#default
{}
放置 TimelineDot 与 TimelineConnector。
详情

声明类型

{}

来源

TimelineSeparator.vue

packages/ui/src/components/timeline/TimelineSeparator.vue

可访问性 ​

  • 语义化结构:时间线使用列表结构(<ol>/<li>)组织节点,便于屏幕阅读器理解内容顺序
  • ARIA 属性:根容器设置 role="list",各节点设置 role="listitem",提供清晰的列表语义
  • 布局方向:orientation 属性自动设置 aria-orientation,告知辅助技术当前布局方向
  • 内容层级:TimelineDot 中的内容(如数字、图标)应配合文本说明,确保信息完整传达

蛮力铸就。