一种动作配一条曲线:出现用缓出、离场用缓入、松手才带弹回;时长跟着路程走
局部小件140–260ms,整页过渡420–550ms,只有本身就是仪式的开场才上秒。同一个动作在一个站里只用一条曲线。
演示点一行的「走一遍」,那一行的小方块按这条曲线、这个时长走一遍。勾上几行再点「一起跑」,同一时刻出发并排比。「统一600ms」把时长拉齐、只比曲线的形状;「慢放×4」看清起步和落定。
数值 / 代码
曲线 名字(时长) 用在
cubic-bezier(.2,.8,.2,1) 通用缓出(140–260ms) 刷刷FLIP补位240、按压按下150;岗岗灯箱开260关200;本站切页进场260
cubic-bezier(.22,1,.36,1) plan缓出(220ms) plan对勾、计数跳动、FLIP(--motion-base)
cubic-bezier(.32,.72,0,1) 苹果ease(240–380ms) card Cover Flow切卡380;plan详情对话框240
cubic-bezier(.4,0,.2,1) 标准(240–500ms) 刷刷标签删除240;小屋主题交叉淡化500
cubic-bezier(.4,0,1,1) 缓入(200–550ms) 离场:本站跨页旧页淡出200;小屋换房间旧页退后550
cubic-bezier(.34,1.56,.64,1) 过冲(420ms) 刷刷按压松手;linear()不认时弹簧的退路
linear(0,.06,.208,…,1.002,1) 弹簧(700ms) card按压松手(阻尼比.5,过冲约16%)
cubic-bezier(.25,.5,.3,1) 揭开(420ms) 本站切明暗的圆形揭开
cubic-bezier(.2,.7,.3,1) 小屋入场(440ms) 小屋页面入场 viewin
cubic-bezier(.3,0,.16,1) 洇纸(550ms) 小屋换房间纸色洇开
cubic-bezier(.34,.06,.42,1) 写字(1750ms) 小屋开场手写
plan 时长令牌 --motion-fast 140ms / --motion-base 220ms / --motion-slow 320ms;减弱动效时三个全归0用在哪
为什么
曲线说的是动作的物理:冒出来的东西一开始最快、落定时最慢;离开的东西慢慢起步、加速走掉;只有手松开的东西才会弹回来。时长跟路程走:按钮的反馈140ms就够,切页要盖住整屏,长一档;超过半秒的只留给不常发生、本身就是仪式的东西(开场写字、走进小屋)。plan把三档时长做成令牌,减弱动效时一处归零。
坑
同一种动作两处用两条曲线,手感就打架:岗岗速查卡抽屉特意跟目录抽屉用同一条.22s ease,两个底部抽屉手感相同。linear()弹簧要先写一行cubic-bezier再写一行linear():不认它的浏览器丢掉后一行,留下前一行。
出处:tools/shua/app.js:702「flipMove」、:3848「PRESS_IN」、:3850「PRESS_OUT」、:2442「cubic-bezier(.4, 0, .2, 1)」;tools/gang/design-proposal.md:1540「12.5 动效口径」;tools/plan/app/src/styles/tokens.css:295「--motion-fast」、:298「--ease-out」、:717「--motion-fast: 0ms」;tools/plan/app/src/App.css:2308「--dd-ease」;tools/card/collection/gallery.css:22「.flow-card」、:33「is-springing」;tools/star/assets/star.css:547「page-in」、:924「vt-out」;tools/star/assets/star.js:199「VT_REVEAL_EASE」;Ysevan_web/app/globals.css「::view-transition-old(root)」(「animation-timing-function」)、「@keyframes xwveilin」、「@keyframes roomexit」;Ysevan_web/app/hall.module.css「.hall」(「animation: viewin」);Ysevan_web/components/handwriting-intro.module.css「@keyframes sweep」