应将 transition 写在基础选择器中以实现颜色渐变自然柔和,推荐使用 color 0.25s ease-in-out,避免写在伪类里或用 linear;注意继承干扰及自定义属性不可直接过渡,深色模式需配合 class 与 transition 手动处理。
直接改颜色值会让文字或背景切换显得生硬、闪烁甚至刺眼,关键是没加过渡动画。用 transition 控制 color 变化节奏,就能让颜色渐变自然柔和。
很多人把 transition 写在 hover 或 active 等伪类里,这是无效的——浏览器只在“离开”时不会自动回退动画。必须写在基础选择器中(比如 a、.btn),让进入和退出都触发过渡。
ease 是默认值,先慢后快再慢,适合大多数场景;如果想更轻柔,可用 ease-in-out;避免用 linear(匀速),它容易显得机械、不够自然。
transition: color 0.25s ease-in-out;
如果父元素设置了 color,子元素又用了 inherit 或未重置,transition 可能失效或行为异常。建议显式声明颜色,并检查 computed styles 确认过渡是否真正作用在目标属性上。
--text-color)不能被 transition 直接监听,需配合 JavaScript 或用 color-mix()(较新)等方案系统级主题切换(@media (prefers-color-scheme: dark))本身不触发动画,需要手动加 JS 或用 transition 配合 class 切换:
body.light { color: #333; } body.dark { color: #eee; }
body { transition: color 0.4s ease, background-color 0.4s ease; }