用 CSS 实现滚动驱动的路径描边
给 SVG 路径加描边动画,常见做法是滚动监听 + 手算进度。这里改用
animation-timeline: view(),把进度交给合成器,主线程不再被滚动事件占住,
长页面上帧率明显更稳。
实验室
写项目时总会遇到值得记下来的问题:某个效果怎么实现、某个性能数字为什么变差、 某个兼容坑怎么绕。我们把它们整理成可复现的记录,公开在这里。
给 SVG 路径加描边动画,常见做法是滚动监听 + 手算进度。这里改用
animation-timeline: view(),把进度交给合成器,主线程不再被滚动事件占住,
长页面上帧率明显更稳。
一个中文字体动辄几 MB,但实际页面用到的字通常不到两千个。我们做了一个 构建期子集化流程,并记录了三个真实项目的前后对比:首屏字节数降了 87% 到 92%。
订单、工单这类多状态流转,用表格描述永远说不清。我们写了一个小库, 输入状态定义与变更规则,输出可交互的图,节点按状态着色,点击看历史。
每次上线前要查的东西其实就那几样:断链、锚点、canonical、分享图、404 页、 图片有没有预留尺寸。与其每次手动过一遍,不如写成脚本跑一次。
绝大多数抖动来自用 top 或 margin 做位移 —— 这些属性会触发重排。
换成 transform 走在合成层,同样的效果,掉帧立刻消失。
文里附了一段可以直接对比的演示。
只用 Tab 键走完整站,问题通常成片出现:焦点丢失、顺序混乱、下拉菜单打不开、 弹窗关不掉。这篇记录了我们在六个项目里找到的典型问题和各自的修法。
AVIF、WebP、JPEG 各自在什么场景更划算,视网膜屏下该给多大,什么时候该裁切 而不是缩放。整理成一张决策表,附一组实测的体积与画质对照。
官网这类项目,上一套重型框架往往得不偿失。我们用一个两三百行的 Node 脚本 读页面片段、套统一版式、输出静态文件 —— 没有依赖,就不会有依赖带来的破事。
说一个你感兴趣的主题,我们把对应的代码和说明整理给你。