Vue实现带拖动和播放功能的时间轴组件
作者:南栀时间:2026-10-31 12:35:59浏览:664
本文介绍基于Vue开发的timeline-slider-vue组件,支持横向与竖向模式。该组件提供拖动交互、日期标记、锁定日期及自动播放功能,详细列出Props参数、Slot插槽及Change/Input事件用法,并附带Node环境配置与项目构建命令。
实现一个具备拖动交互与自动播放功能的时间轴组件
该组件库名为 timeline-slider-vue

可通过在线 Demo 查看实际运行效果
完整源代码托管于 Github 仓库
运行该组件需满足以下环境要求
- Node.js 版本需为 V12.20.0
- npm 包管理器版本需为 6.14.8
安装步骤如下
执行命令 npm install --save timeline-slider-vue 进行安装
组件使用方式说明
在 main.js 中进行全局注册或局部引入
import TimelineSliderVue from 'timeline-slider-vue'
import 'timeline-slider-vue/lib/timeline-slider-vue.css'
Vue.use(TimelineSliderVue)
```vue
<TimelineSliderVue
:date="date"
:mask="mask"
:mark-date="markDate"
:lock-date="lockDate"
:play="play"
:play-speed="playSpeed"
@change="handleChange"
@input="handleInput">
<div
slot="sliderContent"
slot-scope="scope">
{{ scope.data }}
</div>
</TimelineSliderVue>
具体使用示例如下
<template>
<div id="app">
<TimelineSliderVue
:date="date"
:mask="mask"
:mark-date="markDate"
:lock-date="lockDate"
:play="play"
:play-speed="playSpeed"
@change="handleChange"
@input="handleInput"
>
<div slot="sliderContent" slot-scope="scope">
{{ scope.data }}
</div>
</TimelineSliderVue>
</div>
</template>
<script>
export default {
data() {
return {
playSpeed: 1000, // 播放速度
play: false, // 自动播放
lockFlag: false,
markFlag: false,
lockDate: [], // 锁定的日期(滑动结束时自动跳到指定的日期)
markDate: [], // 做标记的日期
mask: true,
date: '2022-06-01',
}
},
methods: {
handleInput(date, value) {
console.log('input', date, value)
},
handleChange(date, value) {
console.log('change', date, value)
},
},
}
</script>
支持竖向模式布局
<TimelineSliderVue
vertical
height="240px"
:max-value="100"
:min-value="0"
:init-value="40"
@change="handleChange"
@input="handleInput"
>
<div slot="sliderContent" slot-scope="scope">
<div>{{ scope.value }}</div>
</div>
</TimelineSliderVue>
组件支持的可用 Props 参数列表
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| vertical | Boolean | false | 竖向模式(只有滑块功能样式,没有日期等功能) |
| initValue | Number | 0 | v-model 绑定的初始值(仅在 vertical = true 时生效) |
| minValue | Number | 0 | 最小值(仅在 vertical = true 时生效) |
| maxValue | Number | 100 | 最大值(仅在 vertical = true 时生效) |
| date | String | 当日 | yyyy-MM-dd 格式的日期,根据传入的日期,设置滑块的位置 |
| mask | Boolean | true | 拖动过程中是否显示遮罩层 |
| mark-date | Array | [] | 一些特殊日期标注,例如 [‘2022-03-08’, ‘2022-06-18’, ‘2022-11-11’] |
| lock-date | Array | [] | 锁定的日期,只能在指定日期下切换,当滑块拖动到其他位置,自动跳到离指定日期最近的日期处例如 [‘2022-03-08’, ‘2022-06-18’, ‘2022-11-11’] |
| play | Boolean | false | 播放 |
| playSpeed | Number | 1000 | 播放速度,同 setInterval milliseconds 参数 |
组件提供的 Slot 插槽定义
| 参数 | 说明 |
|---|---|
| sliderContent | 滑块内容 |
组件触发的 Events 事件列表
| 事件名称 | 说明 | 回调参数 |
|---|---|---|
| change | 值改变时触发(使用鼠标拖拽时,只在松开鼠标后触发) | 改变后的值 |
| input | 数据改变时触发(使用鼠标拖拽时,活动过程实时触发) | 改变后的值 |
项目开发环境搭建与启动命令
执行 yarn install 安装项目依赖
执行 yarn serve 进行开发环境编译并启用热重载
执行 yarn build 进行生产环境编译并压缩代码
执行 yarn lint 对代码进行语法检查与修复
yarn build
Lints and fixes files
yarn lint
至此,关于利用 Vue 实现具备拖动与播放功能的时间轴组件介绍完毕,更多 Vue 时间轴相关内容可查阅往期文章或继续浏览后续章节,感谢支持。
作者最新文章
怎么在React或Vue前端中使用Cube.js Client获取数据
2026-11-03 09:24:09
Vue.js 新手入门:怎么使用 Vite 快速搭建第一个项目
2026-11-02 10:30:55
Vue 项目中封装 heatmap.js:生命周期管理与内存释放
2026-11-02 09:17:40
uni-app 自定义组件开发与通信机制详解
2026-11-01 02:03:46
Vue.js 项目中 Mock 数据的三种实现方案
2026-10-31 17:23:18








