ljs-s-timeline
ljs-s-timeline
Vue3 蛇形时间轴组件:S 形时间线布局,节点与连线样式可配置,适合流程步骤、里程碑、审批轨迹展示——数据按行折返排布,纵向省空间。
English: Vue3 snake-shaped (S-curve) timeline component — items flow in serpentine rows with curved connectors; configurable node/line styles and scoped-slot content. Ideal for process steps, milestones and approval trails.
快速开始
npm i ljs-s-timeline -S
注:样式需手动引入 import 'ljs-s-timeline/index.css'。
注:命名三处不一致——包名 ljs-s-timeline、源码目录 ljs-timeline-s、组件注册名 LjsTimelineS,模板中标签必须写 <LjsTimelineS>。
快速应用
全局注入
import 'ljs-s-timeline/index.css'; // ⚠️ 样式需手动引入
import LjsTimelineS from 'ljs-s-timeline';
app.use(LjsTimelineS);
局部注入
import LjsSTimeline from 'ljs-s-timeline';
import 'ljs-s-timeline/index.css';
// 注:产物为 default 导出,具名导入依赖 CJS 互操作、部分构建工具(如 Vite)下不可靠,请 default 导入后解构
const { LjsTimelineS } = LjsSTimeline;
TypeScript 与 AI 支持
- 自带
index.d.ts类型声明(package.jsontypes字段已配置),安装后编辑器/AI 直接获得完整类型提示。 - 配套
AI.md:面向 AI 助手的使用指南(API 速查、最小示例、典型错误对照),AI 编码工具可直接读取。
与同类的区别(选型参考)
| 对比对象 | 选择本包的理由 |
|---|---|
| flex / SVG 手写蛇形时间轴 | 蛇形折返、奇数行反转、不满行占位补齐都已处理好,现成组件拿来即用 |
| 通用时间轴(含 element-plus 时间线) | 专做 S 形折返布局(纵向省空间);节点/连线样式全可配(点色/线色/弯角/末尾线,支持逐项点色) |
| 其他蛇形时间轴组件 | 本包是该品类 npm 下载量第一,样式可配面最全,且自带类型声明与 AI 使用指南 |
适用:流程步骤、里程碑、审批轨迹等「时间轴 / 步骤条」展示,需要蛇形折返布局节省纵向空间。 不适用:需要交互(点击节点等,无任何事件);数据频繁变动的实时场景(每次全量重排)。
主参数
| 参数 | 类型 | 必填项 | 默认值 | 参考值 | 说明 |
|---|---|---|---|---|---|
| data | Array | √ | 数据。必传,不传会直接报错。 | ||
| rowNum | Number | × | 4 | 每行显示几项(是数量,不是 px)。 | |
| pointHeight | Number | × | 20 | 点高度(宽高一致)。单位:px。 | |
| pointCenterHeight | Number | × | 12 | 点内心高度(宽高一致)。单位:px。 | |
| pointRadius | String | × | 50% | 点圆角。 | |
| pointColor | String | × | #999 | 点颜色。 | |
| lineSize | Number | × | 4 | 线高度。单位:px。 | |
| lineColor | String | × | #CCC | 线颜色。 | |
| lineEndLastShow | Boolean | × | true | 线条末尾单数行是否有尾巴。false时lineEnd无效。 | |
| lineEnd | String | × | 0 | 线条末尾的样式。 0 顶到头 1 末尾截断。 | |
| curveHeight | Number | × | 100 | 弯角宽度。单位:px。最小 30,小于 30 布局错乱。 | |
| itemMarginLeft | String | × | 0 | 项偏移。 |
data 参数
| 参数 | 类型 | 必填项 | 默认值 | 参考值 | 说明 |
|---|---|---|---|---|---|
| LJS_S_point_color | String | × | red, #000000 | 点的颜色。不存在则使用 pointColor 值;如存在则使用 自身值。 |
示例
注:数据不满一行时,组件会向插槽补 { ljsTempTag: true } 占位对象,请在插槽内先过滤(如 v-if="!row.ljsTempTag")。
<template>
<LjsTimelineS :data="list" :rowNum="4" :curveHeight="80">
<template #default="{ row }">
<div v-if="!row.ljsTempTag" class="node">
<div class="name">{{ row.label }}</div>
<div class="date">{{ row.date }}</div>
<div class="content">{{ row.content }}</div>
</div>
</template>
</LjsTimelineS>
</template>
<script setup>
import 'ljs-s-timeline/index.css';
import LjsSTimeline from 'ljs-s-timeline';
const LjsTimelineS = LjsSTimeline.LjsTimelineS;
const list = ref([
{ label: '立项', date: '2026-01', content: '完成立项评审', LJS_S_point_color: '#409EFF' },
{ label: '开发', date: '2026-02', content: '进入开发阶段' },
{ label: '联调', date: '2026-03', content: '接口联调与测试' },
]);
</script>
Related Packages
@growthbunker/vuetimeline
One easy-to-use component to build beautiful responsive timelines.
11,806
350
vue-pipeline
One easy-to-use component to show beautiful responsive timeline like jenkins blu...
7,867
332
Version History
| Version | Released | License |
|---|---|---|
| 2.0.1 | MIT | |
| 2.0.0 | MIT | |
| 1.0.9 | MIT | |
| 1.0.8 | MIT | |
| 1.0.7 | MIT | |
| 1.0.6 | MIT | |
| 1.0.5 | MIT | |
| 1.0.4 | MIT | |
| 1.0.3 | MIT | |
| 1.0.2 | MIT | |
| 1.0.1 | MIT | |
| 1.0.0 | MIT |