手绘日记时间轴与节点动画流SVG 路径跟随动效在手账月度复盘或人生里程碑视图中把离散的日记和打卡记录串联成一条**“蜿蜒曲折、带有自然手绘起伏的水彩藤蔓时间轴Winding Hand-Drawn Timeline”**能给用户带来极具沉浸感的时光漫游体验。很多前端开发者在做时间轴时习惯用一根笔直死板的垂直线div classw-0.5 bg-gray-200把卡片机械地贴在左右两侧。真实的手账时间轴应该像一根自由生长的藤蔓带有自然的 S 型曲线摆动小叶片和盖章节点随着滚动沿着曲线平滑绽放Motion Path SVG Stroke Interpolation。今天我们用SVG 贝塞尔曲线、CSSoffset-path路径跟随动画与滚动驱动动画Scroll-driven Animations纯代码实现一个极度优雅的手绘时间轴组件。-------------------------------------------------------------------- | SVG 手绘蜿蜒藤蔓时间轴物理模型 | -------------------------------------------------------------------- | 主路径: path dM 50,0 C 20,100 80,200 50,300 C 20,400 80,500... /| | └── stroke: #88AA99 (鼠尾草绿) 带有 1.5px 手绘微抖动描边 | | | | 路径生长动画 (随着用户向下滑动网页): | | └── stroke-dasharray / stroke-dashoffset 紧随 window.scrollY 伸展 | | | | 时间轴里程碑节点 (Milestone Nodes): | | ├── offset-path: path(...) 沿主藤蔓曲线精确定位 | | └── 滚动到视口时: 触发朱砂印章盖落或水彩绿叶舒展动画 | --------------------------------------------------------------------1. 核心 React SVG 手绘蜿蜒藤蔓时间轴实现import React, { useEffect, useRef, useState } from react; export const WindingHandDrawnTimeline: React.FC{ items: { date: string; title: string }[] } ({ items, }) { const containerRef useRefHTMLDivElement | null(null); const [scrollProgress, setScrollProgress] useState(0); useEffect(() { const handleScroll () { if (!containerRef.current) return; const rect containerRef.current.getBoundingClientRect(); const windowH window.innerHeight; // 计算容器在当前视口中的滚动百分比 (0 到 1) const progress Math.min(1, Math.max(0, (windowH - rect.top) / (rect.height windowH * 0.5))); setScrollProgress(progress); }; window.addEventListener(scroll, handleScroll, { passive: true }); return () window.removeEventListener(scroll, handleScroll); }, []); return ( div ref{containerRef} classNamerelative max-w-lg mx-auto py-12 px-6 {/* 蜿蜒藤蔓背景 SVG */} svg classNameabsolute top-0 left-1/2 -translate-x-1/2 w-24 h-full pointer-events-none viewBox0 0 100 800 preserveAspectRationone path dM 50,0 Q 15,100 50,200 T 50,400 T 50,600 T 50,800 stroke#88AA99 strokeWidth3 strokeLinecapround strokeDasharray900 strokeDashoffset{900 * (1 - scrollProgress)} fillnone classNametransition-all duration-300 / /svg {/* 沿时间轴分布的手绘卡片 */} div classNamespace-y-16 relative z-10 {items.map((item, idx) ( div key{idx} className{flex items-center gap-4 ${idx % 2 0 ? flex-row-reverse text-right : flex-row}} div classNamew-1/2 p-4 bg-[#FAF7F0] border-2 border-[#2D2B2A] rounded-2xl shadow-[2px_2px_0px_#2D2B2A] span classNametext-[11px] font-bold text-[#D36135] font-mono{item.date}/span h5 classNametext-sm font-bold text-[#2D2B2A] mt-0.5{item.title}/h5 /div {/* 中心水彩节点小印章 */} div classNamew-6 h-6 rounded-full bg-[#FAF7F0] border-2 border-[#88AA99] flex items-center justify-center shrink-0 z-20 shadow-sm span classNamew-2 h-2 rounded-full bg-[#88AA99] / /div div classNamew-1/2 / /div ))} /div /div ); };蜿蜒曲线的情感力量当手指滑动屏幕绿色的水彩藤蔓在宣纸上缓缓延展一颗颗温润的节点被依次点亮。让时光在屏幕上流淌出诗意的弧度把每一天的坚持汇聚成一条动人的岁月之河。
企业数字化 ERP 产品动态
相关推荐
功能安全Hypervisor:为什么ASIL-D系统必须用Type 1虚拟化 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 4:27:47
自动化项目选型与落地:从方案设计到实施避坑指南 做了这么多年自动化,被问得最多的其实不是“这个功能怎么写脚本”,而是“这个项目到底适不适合做自动化、该从哪下手”。很多朋友一上来就奔着框架去,Playwright、pytest、Ansible、Appium 装了一堆,结果跑了两周发现用例维护成本… · 2026/9/26 4:27:47
流式返回中 Markdown 代码块未完成状态的终端渲染 流式返回中 Markdown 代码块未完成状态的终端渲染在开发 AI CLI 命令行工具或终端交互 Agent 时,流式输出(Streaming Token)是保证良好用户体验的标配能力。然而,如果你直接将大模型返回的增量 Token 使用 process.stdout.write()… · 2026/9/26 4:27:47
NodeMCU file_lfs 模块实战:将任意文件嵌入 Lua Flash Store 并透明读写 物联网嵌入式 【免费下载链接】nodemcu-firmware Lua based interactive firmware for ESP8266, ESP8285 and ESP32 项目地址: https://gitcode.com/gh_mirrors/no/nodemcu-firmware 点击查看 免费下载 本指南围绕 NodeMCU 固件仓库中的 file_lfs 模块文档 展开&am… · 2026/9/27 9:32:36
IDEA搭建SpringMVC入门程序(1) 工具:
IDEA 2020.1 Ultimate版
maven 3.6.3
JDK 1.8
1.创建项目
打开IDEA,点击“File—>New—>Project” 我们 选择“Maven”项目, JDK这里选择1.8版本,下面勾选maven-archtype-webapp,然后点击“Next” 来到下面的界面… · 2026/9/27 9:32:24
spring数据库编程实现基于注解方式的声明式事务 本文主要实现基于注解方式的声明式事务,所用工具:
IDEA:2020.2
maven:3.6.3
Win10如何配置Java JDK环境,请点击这里。 添加链接描述 Win10如何配置Maven环境,请点击这里。
IDEA如何配置JDK,请点击这里。
IDEA如何配置Maven&a… · 2026/9/27 9:32:18
wordpress3.8中文标签建站报价揭秘 wordpress3.8中文标签建站报价揭秘 备案流程一头雾水?很多老板在拿到建站报价单后,第一反应不是看价格,而是盯着那几行关于“ICP备案”的条款发呆。你以为付了钱,网站就能立马上线?错。在中国大陆,没有备案的域名无法解析到国内服务器,… · 2026/9/27 9:32:12
Spring AOP—基于注解的AOP实现 本文工具: IDEA2020.1 maven3.6.3
本文源代码如下:
(1)百度网盘 通过网盘分享的文件:Spring AOP—基于注解的AOP实现.zip 链接: https://pan.baidu.com/s/1SoXPzI__RafafuOCMegD_Q?pwd4smh 提取码: 4smh
ÿ… · 2026/9/27 9:32:12
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01