【发布时间】:2013-09-27 03:07:33
【问题描述】:
我目前正在尝试将 div 的背景直接从红色淡化为绿色。但是我找不到一个很好的过渡,它不会在途中遇到任何不匹配的颜色。 我发现的两种方法都使用了 jQuery.Color-plugin,你也可以在 JsFiddle 上找到它们:
$("#rgb")
.css("background-color", "#ff0000")
.animate({backgroundColor: "#00ff00"});
$("#hsl")
.css("background-color", $.Color({ hue: 0, saturation: 1, lightness: 0.5 }))
.animate({backgroundColor: $.Color({ hue: 120, saturation: 1, lightness: 0.5 })});
第一个使用 RGB。 jQuery 只是在#ff0000(红色)和#00ff00(绿色)之间进行插值。但是在动画中间的某个地方,颜色变成了相当深的黄色或棕色,这扰乱了整个动画的印象(可能是#888800)。
第二个使用HSL 但是在这里,动画通过亮黄色传递,因为色调值是从 0 到 120 的动画,在 60 处传递黄色:
有没有其他方法可以通过漂亮的过渡从红色变为绿色?也许在理论上?
【问题讨论】:
-
您是否考虑过将其设为两步转换 - 例如,
ff0000->b0b000->00ff00?这应该可以让你使“泥泞”的颜色变浅。你也可以考虑添加一点蓝色来整体变亮......值得注意的是,在红色/绿色之间总会有一些的黄色阴影,它很亮,几乎是白色,很暗它几乎是黑色的或中间的东西...... -
这确实有点帮助:jsfiddle.net/9RUBR/2