猫是属相吗_十二生肖为什么没猫
2
2025-09-08
很多设计师之一次听到“光流动”都会问:它到底是光在动,还是光把物体照亮后产生的视觉错觉?答案是——两者皆有。光流动本质上是光源位移+材质反射+人眼暂留共同作用的结果。只要抓住这三点,就能把抽象概念变成可落地的设计。
自问:为什么网页上常用线性扫光而少用体积光束?
答:体积光束需要粒子系统,对性能不友好;线性扫光用CSS遮罩即可实现,移动端也能流畅跑。
.sweep {
background: linear-gradient(90deg, transparent, #fff 50%, transparent);
background-size: 200% 100%;
animation: sweep 2s infinite linear;
}
@keyframes sweep {
0% { background-position: -200% 0; }
100% { background-position: 200% 0; }
}
把这段代码贴到按钮或卡片上,就能得到一个从左到右的扫光。如果想让光更柔和,把#fff换成rgba(255,255,255,0.4)。
WebGL的片元着色器里,用一张Perlin噪声图做遮罩:
float pulse = *** oothstep(0.0, 1.0, sin(u_time - length(uv - 0.5) * 5.0));
gl_FragColor = vec4(color, pulse * opacity);
这里的length(uv - 0.5)把像素到中心的距离变成扩散半径,乘以5.0控制速度,sin函数让亮度周期性起伏。
人眼的视觉暂留约0.1秒,当光源在0.05秒内移动超过0.5°视角,大脑就会把前后两帧光斑连成一条线。电影24fps就能让画面连贯,光流动同理。
把光斑简化为高斯分布的亮度函数:
I(x,t) = I₀·exp(-((x-vt)²)/(2σ²))
在代码里,只要每帧更新t,就能让光斑平滑滑动。
浏览器对CSS animation做了合成层优化,光斑移动只触发repaint,不回流; *** 定时器容易掉帧,尤其移动端。
把扫光做在按钮文字上层,扫光周期1.5秒,扫过瞬间点击率提升12%。注意扫光宽度不要超过按钮宽度的30%,否则会喧宾夺主。
在折线图上方叠加一条0.3秒延迟的流光,用户会觉得数据“实时更新”。实现时用SVG的stroke-dashoffset做路径动画,性能优于Canvas重绘。
在卡片边缘加一圈2px的脉冲光,亮度在0.2~0.8之间循环,既提示可点击,又不刺眼。暗黑场景下,纯白光换成蓝紫光更护眼。
解决:把光斑透明度降到0.3以下,或改用叠加模式mix-blend-mode: screen,只提亮不覆盖。
解决:开启硬件加速transform: translateZ(0)
,并把动画作用在独立图层,减少重绘区域。
解决:在光流动之外再加形状变化(如按钮轻微放大2%),多通道提示。
在Figma里建一个“LightFlow”样式库:
开发侧用CSS变量封装:
:root {
--light-sweep-duration: 1.5s;
--light-sweep-color: rgba(255,255,255,0.6);
}
这样设计师改数值,前端不用重新打包。
发表评论
暂时没有评论,来抢沙发吧~