transition 必须通过 class 切换实现,直接修改 style 会导致跳变;需预设颜色类、统一颜色格式、设置安全定时器间隔,并确保全屏背景布局正确。
background-color transition 必须用 class 切换,不能直接改 style
直接写
会导致颜色瞬间跳变,transition 完全不触发。浏览器把内联样式赋值当作强制重绘,绕过了 CSS 的状态变更检测机制。
正确做法是预设好颜色 class,比如:
、
、
,再用 JS 控制
或
切换。
transition 声明必须写在基础 class 上(如
),而不是每个颜色 class 里
避免在目标 class 中使用
简写(例如
),它会覆盖 background-color,导致过渡中断
起始色和目标色要用同一种格式:都用
、都用
或都用十六进制,混用
和
会跳变
定时器间隔必须 ≥ transition 时间 + 0.1s
如果 CSS 写了
,但 JS 用
,就会在动画还没结束时强行切到下一个 class —— 浏览器来不及完成渲染流程,结果是卡顿、回退、甚至颜色闪一下又跳回去。
安全间隔 = transition 持续时间 + 至少 0.1s 余量(例如 1.2s → 设为 1300ms)
别用
递归调用却不清理旧定时器,容易内存泄漏、节奏错乱
不适合这种固定节奏切换,它依赖帧率波动,反而更难控制稳定性
全屏背景必须解决 height 和滚动条干扰
只给
设
是不够的。页面内容一长,body 默认出现滚动条,
实际只占视口高度,背景色会在滚动时露出空白区域——这不是 transition 失效,而是布局前提错了。
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
立即学习
“
前端免费学习笔记(深入)
”;
必须同时设置
加
可防滚动条干扰,但要确认业务允许隐藏滚动
如果页面本身需要滚动,建议把全屏背景套在一个
的独立容器里,避开 body 高度计算逻辑
color-stop 渐变过渡比纯色更可控,但要注意兼容性
想从单色过渡到渐变?
无法平滑过渡到
,因为它们属于不同属性。浏览器不支持在纯色和渐变之间插值。
稳妥方案:统一用
,只改 color stop 的颜色值(位置参数如
固定不变)
Chrome 120+ 支持
直接动画 color stop,但 Safari 15 及更早版本仍 fallback 为跳变
生产环境若需兼容老 Safari,可用伪元素叠加 +
过渡替代
真正卡住人的地方往往不是 transition 怎么写,而是颜色值是否可插值、class 是否被更高优先级规则覆盖、以及 height 计算是否被 margin 或滚动条悄悄破坏。这些细节不排查,光调 timing-function 没用。
element.style.backgroundColor = 'blue'.bg-red.bg-blue.bg-purpleelement.classList.replace()element.className.fullscreen-bgbackgroundbackground: #fff url(img.png)rgb()hsl()rgba()hsl()transition: background-color 1.2s easesetInterval(() => switchClass(), 1000)setTimeoutrequestAnimationFramebodyheight: 100%height: 100%html, body { margin: 0; min-height: 100vh; }overflow: hiddenposition: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: -1;background-colorlinear-gradient()background-image: linear-gradient()0%, 100%transition: background-imageopacity