封装时间轴组件 timeline

2023-12-05 16:30

本文主要是介绍封装时间轴组件 timeline,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

要求时间轴的点展示进度百分比,线也根据进度不同展示不同长度的颜色

实现效果:

使用的组件库是vant的circle

子组件:

<template><div class="m-timeline-area" :style="`width: ${width}px`"><div class="m-timeline"><divv-for="(item, index) in timelineDesc":key="index":class="['m-timeline-item', {'last': index === timelineDesc.length - 1}]"><div class="u-tail" /><div class="u-finish" :style="{'--rate':item.ratePercent,'--borderColor':item.rate==100?'rgb(4, 185, 19)':'rgb(0, 128, 255)'}" /><div class="u-dot"><van-circlev-model="item.currentRate"layer-color="#e4e4e4":color="item.rate==100?'rgb(4, 185, 19)':item.rate==0?'#e4e4e4':'rgb(0, 128, 255)'":stroke-width="60":rate="item.rate":speed="100"size="44px":text="item.text"/></div><div class="u-content">{{ item.title || '--' }}<div class="time"><div>计划完成时间:{{ item.planTime }}</div><div>实际完成时间:{{ item.finishTime }}</div></div></div></div></div></div>
</template>
<script>
export default {name: 'Timeline',props: {timelineDesc: { // 时间轴内容数组type: Array,default: () => {return []}},width: { // 时间轴区域总宽度type: Number,default: 360}},data() {return {currentRate: 0}},computed: {text() {return this.currentRate.toFixed(0) + '%'}}
}
</script><style lang="less" scoped>@blue: #1890ff;@green: #52c41a;@red: #f5222d;@gray: rgba(0,0,0,.25);.m-timeline-area {margin: 0 auto;.m-timeline {.m-timeline-item {position: relative;padding-bottom: 10px;.u-tail {position: absolute;top: 44px;left: 21px;height: calc(100% - 44px);border-left: 3px solid #e4e4e4; // 实线// border-left: 2px dotted #e8e8e8; // 点线// border-left: 2px dashed #e8e8e8; // 虚线}.u-finish{position: absolute;top: 44px;left: 21px;height: calc((100% - 44px)*var(--rate));border-left: 3px solid var(--borderColor); // 实线}.u-dot {position: absolute;width: 40px;height: 40px;}.u-content {position: relative;top: 8px;margin-left: 50px;word-break: break-all;word-wrap: break-word;line-height: 24px;font-size: 16px;font-weight: 500;.time{font-size: 14px;margin-top: 10px;font-weight: 400;}}}.last {.u-tail,.u-finish {display: none;}}}}</style>

父组件

 <time-line :timeline-desc="timelineDesc" :width="480" />
import TimeLine from './TimeLine'data() {return {timelineDesc: [{ title: '启动', planTime: '2024-10-20', finishTime: '2023-12-30', rate: 100, currentRate: 0, text: '100%', ratePercent: 1 },{ title: '需求确认', planTime: '2024-10-20', finishTime: '2023-12-30', rate: 60, currentRate: 0, text: '60%', ratePercent: 0.6 },{ title: '项目开发', planTime: '2024-10-20', finishTime: '2023-12-30', rate: 30, currentRate: 0, text: '30%', ratePercent: 0.3 },{ title: '功能测试', planTime: '2024-10-20', finishTime: '2023-12-30', rate: 0, currentRate: 0, text: '0%', ratePercent: 0 },{ title: '上线', planTime: '2024-10-20', finishTime: '2023-12-30', rate: 0, currentRate: 0, text: '0%', ratePercent: 0 }],}
}

这篇关于封装时间轴组件 timeline的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/458294

相关文章

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

基于Qt Qml实现时间轴组件

《基于QtQml实现时间轴组件》时间轴组件是现代用户界面中常见的元素,用于按时间顺序展示事件,本文主要为大家详细介绍了如何使用Qml实现一个简单的时间轴组件,需要的可以参考下... 目录写在前面效果图组件概述实现细节1. 组件结构2. 属性定义3. 数据模型4. 事件项的添加和排序5. 事件项的渲染如何使用

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

vue2 组件通信

props + emits props:用于接收父组件传递给子组件的数据。可以定义期望从父组件接收的数据结构和类型。‘子组件不可更改该数据’emits:用于定义组件可以向父组件发出的事件。这允许父组件监听子组件的事件并作出响应。(比如数据更新) props检查属性 属性名类型描述默认值typeFunction指定 prop 应该是什么类型,如 String, Number, Boolean,

JavaSE——封装、继承和多态

1. 封装 1.1 概念      面向对象程序三大特性:封装、继承、多态 。而类和对象阶段,主要研究的就是封装特性。何为封装呢?简单来说就是套壳屏蔽细节 。     比如:对于电脑这样一个复杂的设备,提供给用户的就只是:开关机、通过键盘输入,显示器, USB 插孔等,让用户来和计算机进行交互,完成日常事务。但实际上:电脑真正工作的却是CPU 、显卡、内存等一些硬件元件。

kubelet组件的启动流程源码分析

概述 摘要: 本文将总结kubelet的作用以及原理,在有一定基础认识的前提下,通过阅读kubelet源码,对kubelet组件的启动流程进行分析。 正文 kubelet的作用 这里对kubelet的作用做一个简单总结。 节点管理 节点的注册 节点状态更新 容器管理(pod生命周期管理) 监听apiserver的容器事件 容器的创建、删除(CRI) 容器的网络的创建与删除

火语言RPA流程组件介绍--浏览网页

🚩【组件功能】:浏览器打开指定网址或本地html文件 配置预览 配置说明 网址URL 支持T或# 默认FLOW输入项 输入需要打开的网址URL 超时时间 支持T或# 打开网页超时时间 执行后后等待时间(ms) 支持T或# 当前组件执行完成后继续等待的时间 UserAgent 支持T或# User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器

哈希表的封装和位图

文章目录 2 封装2.1 基础框架2.2 迭代器(1)2.3 迭代器(2) 3. 位图3.1 问题引入3.2 左移和右移?3.3 位图的实现3.4 位图的题目3.5 位图的应用 2 封装 2.1 基础框架 文章 有了前面map和set封装的经验,容易写出下面的代码 // UnorderedSet.h#pragma once#include "HashTable.h"

封装MySQL操作时Where条件语句的组织

在对数据库进行封装的过程中,条件语句应该是相对难以处理的,毕竟条件语句太过于多样性。 条件语句大致分为以下几种: 1、单一条件,比如:where id = 1; 2、多个条件,相互间关系统一。比如:where id > 10 and age > 20 and score < 60; 3、多个条件,相互间关系不统一。比如:where (id > 10 OR age > 20) AND sco