Vue时间轴

之前有这样子的需求没有用第三方插件于是自己写一个简单的时间轴

时间轴滚动条并左右切换滚动条位置相对应移动

在这里插入图片描述

<div class="time-scrollbar"><div v-if="timeLineData.length>0" class="scrollbar-content"><div class="arrow" @click="clickLeft"> <el-icon :size="40"><ArrowLeft /></el-icon></div><el-scrollbar ref="timeScrollbarRef" @scroll="scrollChange"  always ><TimeLine ref="timeLineRef" id="timeLineId" class="time-line" direction="vertical" :stripe="true" sizeIcon="large" :timelineList="timeLineData" :hollowIcon="true" :hasNameCenter="false"/></el-scrollbar><div class="arrow" @click="clickRight"><el-icon :size="40"><ArrowRight /></el-icon></div></div><div v-else class="text-info">暂无数据</div></div>const clickLeft = () => {if(start.value > 0) {start.value = start.value-1398end.value = end.value-10timeScrollbarRef.value.scrollTo(start.value, end.value)// 点击更改数据// page.value = page.value >=1? 1: page.value-1 // getTimeLineData()}
}
const scrollChange = (scrollData: any) => {start.value = scrollData.scrollLeft
}
const clickRight = () => {const contentWidth = document.getElementById('timeLineId')?.offsetWidth as numberif((end.value + 1398) < contentWidth) {start.value = start.value+1398end.value = end.value+10timeScrollbarRef.value.scrollTo(start.value, end.value)}//  点击更改数据// page.value = page.value+1 // getTimeLineData()
}

//TimeLine页面

<template><div class="time-line-box"><el-timeline:class="{timeline: true,'timeline-stripe': stripe,'timeline-vertical': direction === 'vertical','name-center': hasNameCenter}"><el-timeline-itemv-for="(item, index) in timelineList":key="index":timestamp="!$slots.item ? item.time : undefined"placement="top"center:color="item.color":hollow="hollowIcon":size="sizeIcon":icon="hasNameCenter ? () => item.name : undefined":style="direction === 'vertical'? `width: calc(${100 / timelineList.length}% - 2px)`: 'width: 100%'"@click="item.onClick"><template v-if="$slots.item"><slot name="item" :data="item" /></template><template v-else><div v-if="!hasNameCenter" class="name">{{ item.name }}</div><div class="time">{{ item.keepTime }}</div></template></el-timeline-item></el-timeline></div></template>
<script lang="ts" setup>
import { PropType } from 'vue'
import { Card } from '@/components'defineProps({stripe: {type: Boolean,default: false},direction: {type: String as PropType<'horizontal' | 'vertical'>,default: 'horizontal'},timelineList: {type: Array as PropType<any[]>,default: () => []},height: {type: [Number, String],default: () => 150},hasNameCenter: {type: Boolean,default: false},hollowIcon:{type: Boolean,default: false},sizeIcon:{type: String as PropType<'normal' | 'large'>,default: 'normal'}
})
</script>
<style lang="scss" scoped>
.time-line-box {:deep(.timeline) {margin: 0;padding: 18px 0 0;.el-timeline-item__tail {border-left: 2px solid rgba(255, 255, 255, 0.3);}.el-timeline-item__timestamp {margin-bottom: 0;padding-top: 0;}.el-timeline-item__timestamp,.el-timeline-item__content {font-size: 14px;font-weight: normal;color: #fff;}// .el-timeline-item {//   width: 100% !important;//   // padding: 0 0 10px;// }}:deep(.timeline-vertical) {display: flex;.el-timeline-item__tail {border-left: none;border-top: 2px solid rgba(255, 255, 255, 0.3);width: 100%;position: absolute;top: 6px;}.el-timeline-item__timestamp {margin-bottom: 8px;padding-top: 4px;}.el-timeline-item__node {left: 35%;margin-top: 15px;border-color: #037DFF;}.el-timeline-item__wrapper {padding-left: 0;position: absolute;top: 20px;text-align: center;}}:deep(.timeline-stripe) {padding-top: 85px;.el-timeline-item {.el-timeline-item__wrapper {transform: translateY(-165%);}&:nth-child(2n) {.el-timeline-item__wrapper {transform: translateY(0%);}}}}:deep(.name-center) {.el-timeline-item__node {height: 20px;border-radius: 4px;width: auto;padding: 0 5px;font-size: 14px;font-weight: 500;color: #fff;.el-timeline-item__icon {width: inherit;height: inherit;line-height: 20px;}}}
}
</style>

记录一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/727041.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP PP学习笔记07 - 简单BOM,派生BOM,多重BOM,批量修改工具 CEWB

上一章讲了BOM的操作。 SAP PP学习笔记06 - BOM操作&#xff08;BOM 展开&#xff0c;BOM 使用先一览&#xff0c;BOM比较&#xff0c;批量更改BOM&#xff09;-CSDN博客 本章延续上一章&#xff0c;继续讲BOM操作。 主要讲 派生BOM&#xff0c;多重BOM&#xff0c;以及BOM批…

收费的Excel,不收费的国产WPS、Ever这4款加强版,谁口碑更好?

国产软件存在的问题不在少数&#xff0c;诸如“流氓捆绑”、“广告弹屏”、“APP乱象”、“大数据杀熟”等弊端&#xff0c;让许多人对其嗤之以鼻。 尽管国内软件往往免费&#xff0c;而国外软件需要付费&#xff0c;大家还是更愿意选择付费使用国外软件&#xff0c;并且许多国…

Selenium自动化测试-3.元素定位(1)

这次我们要分享的是对元素的定位&#xff0c;在一个页面中有很多不同的策略来定位一个元素&#xff0c;我们选择最合适的方法即可。 一个页面最基本组成单元是元素&#xff0c;想要定位一个元素&#xff0c;我们需要特定的信息来说明这个元素的唯一特征。 selenium 主要提供了…

用java实现A*寻路算法

前言&#xff1a; 最近的开发中遇到了寻路这个知识点&#xff0c;然后去了解了一下最常见的A算法&#xff0c;本会会结合我的理解&#xff0c;用最通俗易懂的话语讲解A算法的原理&#xff0c;下面会给出代码示例。 说到寻路算法&#xff0c;就涉及到了图的遍历&#xff0c;然…

代码学习记录14

随想录日记part14 t i m e &#xff1a; time&#xff1a; time&#xff1a; 2024.03.07 主要内容&#xff1a;今天的主要内容是二叉树的第三部分&#xff0c;主要涉及二叉树最大深度&#xff1b;二叉树最小深度&#xff1b;完全二叉树的节点个数。 104.二叉树的最大深度111.二…

Jmeter基础使用---Token鉴权接口关联

接口测试流程&#xff1a; 查看API接口文档&#xff0c;熟悉接口业务&#xff08;地址、端口、参数、鉴权、状态码&#xff09;设计接口测试用例&#xff08;正例&#xff1a;正确的结果&#xff1b;反例&#xff1a;鉴权异常、参数异常、兼容异常、其他异常&#xff09;使用接…

受投资人青睐,易鑫租赁深交所再发8.10亿ABS,利率再创新低

近日&#xff0c;上海易鑫融资租赁有限公司&#xff08;以下简称“易鑫租赁”&#xff09;成功发行“天风-易鑫租赁惠民4期资产支持专项计划”&#xff0c;募集资金8.10亿元&#xff08;人民币&#xff0c;下同&#xff09;。此次发行利率再创易鑫ABS历史新低。 2023年1月&…

windows安装程序无法将windows配置为此计算机

目录 问题描述 问题原因 解决办法 方法一 方法二 方法三&#xff1a; 问题描述 重装系统时显示windows安装程序无法将windows配置在此计算机硬件上. 问题原因 安装介质已损坏 如果可引导的安装介质&#xff08;如DVD或USB驱动器&#xff09;损坏或损坏&#xff0c;安装过…

17-Java解释器模式 ( Interpreter Pattern )

Java解释器模式 摘要实现范例 解释器模式&#xff08;Interpreter Pattern&#xff09;实现了一个表达式接口&#xff0c;该接口解释一个特定的上下文 这种模式被用在 SQL 解析、符号处理引擎等 解释器模式提供了评估语言的语法或表达式的方式&#xff0c;它属于行为型模式 …

buildadmim生成代码时让菜单有层级

当我们使用buildadmin生成代码的时候&#xff0c;在菜单的部分&#xff0c; 有时希望它生的是一个带有层级的菜单&#xff0c;有时候则想生成一个没有层级的菜单 like this 经过本人测试 如果我们要生成没有层级的菜单 我们可以在高级设置中的 相对位置处更改&#xff0c;同时…

使用java批量写入环境变量

环境需求 jdk版本&#xff1a;1.8 jna依赖&#xff1a; <dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>5.10.0</version></dependency><dependency><groupId>net.java.…

ServletContext

ServletContext 1.共享数据 ServletContext servletContext this.getServletContext(); String username "徐凤年"; servletContext.setAttribute("username",username);ServletContext servletContext this.getServletContext(); String username (…

因果学习篇(2)-Causal Attention for Vision-Language Tasks(文献阅读)

Causal Attention for Vision-Language Tasks 引言 这篇论文是南洋理工大学和澳大利亚莫纳什大学联合发表自2021年的CVPR顶会上的一篇文献&#xff0c;在当前流行的注意力机制中增加了因果推理算法&#xff0c;提出了一种新的注意力机制&#xff1a;因果注意力(CATT)&#xff…

航芯防护组合拳「MCU+安全」,让数字资产加倍安全!

在这个万物互联的时代&#xff0c;数据安全的“飓风”正在袭来。随着集成电路的广泛应用&#xff0c;安全问题也日益凸显。从芯片漏洞到硬件攻击&#xff0c;这些问题都给集成电路的应用带来了严峻的挑战。一旦安全防线被突破&#xff0c;智能设备的数字资产安全将面临威胁。 …

电动自行车易着火的启示

电动自行车起火情况不时发生&#xff0c;上海雷卯EMC小哥分析原因&#xff0c;或许对您有所启示。 电动自行车容易发生起火的原因可能是由于电池管理系统&#xff08;BMS&#xff09;的保护功能不足或者电池质量问题导致的。要改进BMS的保护功能以减少火灾风险&#xff0c; 可…

【CSP】201403-3-命令行选项

CSP-201403-3-命令行选项 关键点&#xff1a;将整行字符串按空格分割 在解析命令行时&#xff0c;一个常见的需求是将整个命令行字符串分割成多个部分&#xff0c;通常以空格为分隔符。这些部分包括命令行工具的名称、选项&#xff08;可能带有前缀-或--&#xff09;和这些选项…

mongodb 图形界面工具 -- Studio 3T(下载、安装、连接mongodb数据库)

目录 mongodb 图形界面工具 -- Studio 3T下载安装第一次使用&#xff1a;注册添加一个连接&#xff08;连接 mongodb 数据库&#xff09;1、点击【添加新连接】&#xff0c;选择【手动配置我的连接设置】2、对 Server 设置连接数据3、连接的用户认证设置&#xff08;创建数据库…

航芯1-Wire安全认证新品上市,防抄板和耗材认证高性价比之选

随着用户产品附加值提升带来的对防抄板的需求&#xff0c;以及电池、医疗耗材、电子配件、IOT领域中对设备认证的需求&#xff0c;上海航芯经过多年的技术积累和对市场的理解&#xff0c;推出了高性价比的ACL16_Axx系列。 1-Wire单总线&#xff1a;小尺寸实现高效传输 ACL16_…

JAVA WEB开发 错误:无效发行版解决办法

1.首先查询本安装的jdk版本 在cmd中输入如下指令 2.打开file——progect structure 2.将这两处保持一致即可

一图看懂:什么是“新质生产力”?

◆2023年9月&#xff0c;首次提出“新质生产力”。 ◆2024年1月&#xff0c;强调“加快发展新质生产力&#xff0c;扎实推进高质量发展”。 ◆2024年3月&#xff0c;《政府工作报告》中提出&#xff0c;要大力推进现代化产业体系建设&#xff0c;加快发展新质生产力。充分发挥…