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.hqwc.cn/news/520004.html

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

相关文章

vue3的基本使用(1)

Vue3的基本使用&#xff08;1&#xff09; 初识vue31. vue3简介2. 性能提升3. 源码升级 Vue3的创建1. vue-cli创建2. vite创建 Composition API的区别&#xff08;组合式&#xff09;setup函数响应式数据1. ref响应式2. reactive响应式 toRefs与toRef简单介绍 初识vue3 1. vue…

Vue系列-环境快速搭建

vue环境快速搭建 演示视频 快速搭建Vue开发环境pnpm和yarn 1. 基本信息 作者: GMCY系列: Vue仓库: GitHub | Gitee话题(GitHub): tools \ vue创建时间: 2024/03/02 2. 介绍 功能 批处理文件vue 环境的快速搭建nodejs, npm, pnpm, yarn 自动 下载安装npm, pnpm, yarn 自动 …

CVE-2024-27198 JetBrains TeamCity 身份验证绕过漏洞分析

漏洞简介 JetBrains TeamCity 是一款由 JetBrains 公司开发的持续集成和持续交付服务器。它提供了强大的功能和工具&#xff0c;旨在帮助开发团队构建、测试和部署他们的软件项目 JetBrains TeamCity发布新版本修复了两个高危漏洞JetBrains TeamCity 身份验证绕过漏洞(CVE-20…

企智汇:引领企业项目管理的数字智能化管理系统工具!

随着数字化时代的来临&#xff0c;企业对项目管理的要求也日益增高。面对日益复杂的业务流程和海量数据&#xff0c;如何有效地管理项目、整合资源、优化流程、提高管理效率&#xff0c;成为了摆在企业面前的重要课题。在这样的背景下&#xff0c;专业做了10年项目管理系统的&a…

vsphere虚拟机迁移是灰色如何解决

vsphere虚拟机迁移是灰色如何解决 问题描述&#xff1a; 在vsphere中&#xff0c;迁移虚拟机时迁移按钮是灰色&#xff0c;无法迁移&#xff0c;关机之后也无法迁移 虚拟机按钮为灰色 找到虚拟机存储对应的位置&#xff0c;查询是否有.vmx虚拟机文件 查询中发现有.vmx文件存…

JS使用方式

JS是解释性语言&#xff0c;所以不需要搭建类似C#/Java之类的开发运行环境&#xff0c;因为他们是编译型语言。JS一般运行在浏览器中或者node环境中&#xff0c;这里都是JS引擎的功劳。 node环境使用 推荐使用nvm管理node版本&#xff0c;nrm管理代理地址。 安装node&#xf…

P2241 统计方形(数据加强版) python解法

求n*m网格内矩形的数目 - tenos - 博客园 (cnblogs.com) 法一&#xff08;题解推规律暴力枚举得到&#xff09;&#xff1a; n,mmap(int,input().split()) sqr,rec0,0 #正方形和长方形个数 #以长宽做循环&#xff0c;每次求n*m大小的矩形的个数 #题解是从0开始的&#xff0c;我…

供应链管理(SCM):界面设计全面扫盲,得供应链者得天下

大家伙&#xff0c;我是大千UI工场&#xff0c;专注UI分享和项目接单&#xff0c;本期带来供应链系统的设计分享&#xff0c;欢迎大家关注、互动交流。 一、什么是SCM SCM系统是供应链管理&#xff08;Supply Chain Management&#xff09;系统的缩写。供应链管理是指协调和管…

信号处理--卷积残差网络实现单通道脑电的睡眠分期监测

目录 背景 亮点 环境配置 数据 方法 结果 代码获取 参考文献 背景 人类大约花三分之一的时间睡觉&#xff0c;这使得监视睡眠成为幸福感的组成部分。 在本文中&#xff0c;提出了用于端到端睡眠阶段的34层深残留的Convnet架构 亮点 使用深度1D CNN残差架构&#xff0…

支小蜜校园防欺凌报警系统如何识别霸凌

校园霸凌给受害者带来了深重的心理和身体伤害。为了有效应对这一问题&#xff0c;校园防欺凌报警系统应运而生&#xff0c;其核心技术在于如何准确、迅速地识别霸凌行为。那么校园防欺凌报警系统是如何识别霸凌的呢&#xff1f; 图像识别技术 这些系统利用高清摄像头捕捉校园…

【软件测试】如何申请专利?

一、专利类型 在软件测试领域&#xff0c;可以申请发明专利、实用新型专利和外观设计专利。其中&#xff0c;发明专利是最常见的专利类型&#xff0c;它保护的是软件测试方法、系统和装置等技术方案。 二、申请专利的条件 申请专利需要满足新颖性、创造性和实用性三个条件。…

晶圆上特性表征

测试仪器&#xff1a; 半导体器件表征系统&#xff08;DC&CV&#xff09;&#xff1a;Keysight B1500A 半导体器件分析仪&#xff08;B1500A&#xff09;测量能力&#xff1a; 1.IV、CV、脉冲/动态IV范围为0.1 fA-1 A/0.5 uV-200 V 2.器件、材料、半导体、有源/无源元件的…