我目前正在尝试直接将一个div的背景从红色渐变为绿色。但是我找不到一个好的过渡效果,它不会经过任何不匹配的颜色。
我找到的两种方法都使用了jQuery.Color插件,你也可以在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
?这样可以让“浑浊”的颜色变得更轻。你也可以考虑添加一点蓝色来整体加亮... 值得注意的是,在红/绿之间总会有某种程度的黄色,无论它是如此浅以至于几乎是白色,还是如此深以至于几乎是黑色,或者介于两者之间... - Basic