带动画的事件时间线

2024-01-28

我想要构建的是一个带有一些动画的垂直时间轴组件。我尝试的动画是从第一个圆圈开始,无论哪个项目的状态为true,垂直线都会从上到下绘制,同时无论完成哪个步骤,当线穿过它时,都会从圆形变为已完成的复选标记。

我怎样才能实现上面的动画,到目前为止我已经尝试过,但不知道如何实现上面的效果。

我想实现什么目标this https://i.stack.imgur.com/yoUgm.jpg

sandbox https://codesandbox.io/s/loving-wave-1bjqv

任何帮助表示赞赏。


我修改了你的沙箱以使其正常工作:https://codesandbox.io/s/animable-timeline-reactjs-tiofz https://codesandbox.io/s/animable-timeline-reactjs-tiofz

  1. 对于动画,我使用了以下 CSS:

    div {
      height: 200px;
      width: 10px;
    }
    
    .green-progress {
      background: linear-gradient(0, #00a36c, #00a36c) no-repeat, #ccc;
      background-size: 100% 0;
      animation: progressAnim 3s linear infinite forwards;
    }
    
    @keyframes progressAnim {
      0% {
        background-size: 100% 0;
      }
      100% {
        background-size: 100% 100%;
      }
    }
    <div class="green-progress"></div>

    To animate actual time line we'll remove vertical bar from first entry and there will be only checked circle. From second entry onwards we'll have a vertical bar and checked circle. To make them consistent they've been shifted upwards. To show progress, the bar will fill and then circle will be checked.
  2. 已转换App有状态组件,以便我们可以维护动画状态。 在构造函数中,对于添加的每个条目id, startAnim, and checked状态。在这里,我们将设置startAnim标志在相应的 TimelineConnector 上启动动画。和checked用于控制对圆圈进行复选标记。

  3. In TimelineConnector将类设置为 green-progress ifthis.props.startAnim是真的。还添加了onAnimationEnd处理程序为{() => this.props.onAnimDone(this.props.id)}。这告诉 App 组件动画是在该组件上完成的id.

  4. In TimelineDot used props.event.checked设置选中状态。

  5. 在App中添加了生命周期钩子componentDidMount当所有组件都添加到实际 DOM 时,它将被调用。在挂钩中,选中第一个圆圈并在第一个 TimelineConnector 上启动动画。

  6. 当 TimelineConnector 完成动画时,它会调用startNextAnim在应用程序中。在该方法中,您首先完成最后一个条目上的复选标记。如果条目有则开始下一个动画status:true.


We could've added delays to each animation and ran them at once. But parent controlling each component and each component notifying when animation is done makes it more flexible to update the code. You can have different animations for each entry, based on their state.

We can use react-spring animation library but things will get complicated. CSS animation is the simplest solution.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带动画的事件时间线 的相关文章

随机推荐

  • ASCII 比较和字符串比较的区别

    我正在使用 C 当我比较两个字符值时 它会向我发送正确的输出 例如 CompareTo Its sending me positive value 12 means gt is true 但是当我比较两个相同值的字符串时 它会向我发送不同的
  • 带有参数和通配符的 SQL LIKE 运算符

    我有一个查询 我想返回名称中具有特定字符串且两侧带有通配符的所有客户端 因此 输入可能是 Smith 我想返回 The John Smith Company 或 Smith and Bros 等所有内容 我希望 Client 得到提示 因此
  • 在 Angular 和 Chrome DevTools 中提取 css 文件的问题

    I use ng serve sm ec提取 scss 文件angular 5 但是当我做出改变时Elements的翁格莱Chrome DevTools像那样 它没有自动保存 我必须改变它Sourcesonglet 并保存以使其正常工作 我
  • iTextSharp - 如何打开/读取/提取文件附件?

    我有一些 PDF 文件 其中包含两个带有静态名称的附加文件 我想使用 iTextSharp 将这些文件提取到临时目录 以便我可以进一步使用它们 我尝试按照教程进行操作但当我遇到问题时iTextSharp text pdf PdfReader
  • 在 C# 中设置 MimeType

    在 C 中设置 mimetypes 是否有比我尝试做的更好的方法 提前致谢 static String MimeType string filePath String ret null FileInfo file new FileInfo
  • C++ 中网络掩码转换为 CIDR 格式

    我必须将 2 个 DWORD IP 地址和网络掩码转换为 CDIR 格式 所以我有 2 个 DWORD 对应 1 1 1 1 和 255 255 255 255 我想拿出字符串 1 1 1 1 32 对此有什么想法吗 Thanks 最简单的
  • xml.etree.ElementTree - 设置 xmlns = '...' 时遇到问题

    我肯定错过了什么 我正在尝试设置谷歌产品提要 但我很难注册命名空间 例子 路线在这里 https support google com merchants answer 160589 https support google com mer
  • Oracle NUMBER 类型是否可能溢出?

    我正在使用名为 Appworx 的进程调度软件 其中 每个进程和子进程可以有任意数量的 条件 如果条件为真 则采取一些条件操作 goto 语句是可能的条件操作之一 其中一个普通整数是标签 每个条件从 1 开始编号 我想使用此功能来循环评估和
  • 将 SDL 应用程序移植到 iOS

    我仅使用 SDL 无 OpenGL 用 C 创建了一个小游戏 并希望将其移植到 iOS 6 我无意公开发布 仅供个人使用 该应用程序仅使用准系统 SDL 库本身 没有 ttf 或图像 那么 将游戏移植到 iOS 6 的最佳无麻烦方式是什么
  • 在可区分联合中使用 F# 中的 and 关键字

    我今天面临以下 DU 声明 type Grammar Definition list and Definition Def of string Expression and Range Char of char Range of char
  • 使用htaccess重写使子目录成为其自己的根目录以用于根相对路径请求

    我可以使用 htaccess 捕获来自某个子目录的请求并使该目录使用自身作为任何根相对路径请求的根目录吗 例如 如果我有 http www example com subFIXED subANY restofpath 其中 subFIXED
  • 如何检测何时使用 MKUserTrackingBarButtonItem

    我目前正在尝试找到一种方法来检测何时MKUserTrackingBarButtonItem被使用 除了处理mapView didUpdateUserLocation 委托方法 我尝试设置ActionMKUserTrackingBarButt
  • 在cowplot::plot_grid 的多面板图中设置单个面板的宽度和高度

    我正在使用多面板图ggplot2 and cowplot包 但我需要更改单个图的高度 最简单地用一个例子来展示 library ggplot2 library cowplot p1 lt ggplot iris aes Sepal Widt
  • 表单 Google 脚本防止重复

    我正在制作一个谷歌表单 有一个名为 name 的字段 其中包含其他字段 如标题 公司和电子邮件地址 如果数据库中已经有一个特定的人 我希望其他信息用新信息替换旧信息 即更新功能 但我在使用 Google Apps 脚本执行此操作时遇到麻烦
  • 如何在使用通用开发服务器的团队环境中使用 Coldfusion Builder 2?

    我们的 CF 9 开发环境位于通用开发服务器 DEVWEB 上 我们正在考虑从 Dreamweaver 迁移到 Coldfusion Builder 作为我们的 IDE 我担心 CF Builder 在项目根目录中放置 settings 目
  • 详细了解大量 3x3 矩阵的逆算法

    我遵循这个原始帖子 用于反转大量 3x3 矩阵的 PyCuda 代码 https stackoverflow com questions 55357826 pycuda adapt existing code and kernel code
  • 如何在 Rust 中将十六进制值转换为 Base64

    我在理解 Rust 中的特征概念时遇到一些问题 我正在尝试将一个简单的十六进制值编码为 Base64 但没有运气 这是我的代码 还有一个字符串到 Base64 的示例 extern crate serialize use serialize
  • 如何在 CAS 服务管理中注册我的 Web 应用程序?

    我的学校想要实现一个CAS服务 我做了大部分配置 但是我需要注册webapp 如何在CAS服务管理中注册webapp 或者如果您有一些可以帮助我的样本 我将非常感激 我尝试过使用 cas 管理应用程序 版本为 4 2 x 我不确定您想使用什
  • 通知 PendingIntent 意图额外内容被另一个通知覆盖

    当使用新的 PendingIntent 创建新通知时 其意图中的额外内容将覆盖任何先前通知的 PendingIntent 意图额外内容 例如 假设我使用 PendingIntent1 创建Notification1 其中包含 Intent1
  • 带动画的事件时间线

    我想要构建的是一个带有一些动画的垂直时间轴组件 我尝试的动画是从第一个圆圈开始 无论哪个项目的状态为true 垂直线都会从上到下绘制 同时无论完成哪个步骤 当线穿过它时 都会从圆形变为已完成的复选标记 我怎样才能实现上面的动画 到目前为止我