ljs-s-timeline

Vue3 蛇形时间轴组件:S 形时间线布局,节点与连线样式可配置,适合流程步骤、里程碑、审批轨迹展示
1,837
Install
npm install ljs-s-timeline
Latest Version:2.0.1
License:MIT
Last Updated:Oct 23, 2026
Links: npm
Maintainer: 9mountain

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.

ljs-s-timeline

快速开始

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.json types 字段已配置),安装后编辑器/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

vue-snake-timeline

Vue蛇形时间轴

1,129 7
vue2-ganttify

DHTMLX Gantt(社区版/MIT) × ElementUI el-table × Vue 2.6 甘特图组件

356 0
@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