Aunque son un poco más complicado que las otras respuestas , esto le dará un agradable degradado lineal de un color a otro, y le permitirá usar su representación hexadecimal.
marcado
<ul id="my-list">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
<li>Item 6</li>
</ul>
código
$(document).ready(function() {
makeLovely($("#my-list li"), 0x00ff00, 0x0000ff);
});
// code modified from: http://www.herethere.net/~samson/php/color_gradient/color_gradient_generator.php.txt
function makeLovely(items, startColor, endColor) {
var r0 = (startColor & 0xff0000) >> 16;
var g0 = (startColor & 0x00ff00) >> 8;
var b0 = (startColor & 0x0000ff);
var r1 = (endColor & 0xff0000) >> 16;
var g1 = (endColor & 0x00ff00) >> 8;
var b1 = (endColor & 0x0000ff);
var steps = items.length;
items.each(function(index) {
var r = interpolate(r0, r1, index, steps);
var g = interpolate(g0, g1, index, steps);
var b = interpolate(b0, b1, index, steps);
var newColor = zeroFill(((((r << 8) | g) << 8) | b).toString(16), 6);
// console.log(newColor);
$(this).css('background-color', newColor);
});
}
function interpolate(start, end, index, steps) {
if(start < end) {
return ((end - start) * (index/steps)) + start;
}
return ((start - end) * (1 - (index/steps))) + end;
}
// stolen outright from: http://stackoverflow.com/questions/1267283/how-can-i-create-a-zerofilled-value-using-javascript
function zeroFill(number, width) {
width -= number.toString().length;
if (width > 0) {
return new Array(width + (/\./.test(number) ? 2 : 1)).join('0') + number;
}
return number;
}
Por supuesto, esto podría ser envuelto en un plugin de jQuery si lo prefiere.
Espero que ayude!
¿Esto no solo maneja la transición entre tonos de rojo? –
Creo que eso es lo que hizo la pregunta; cómo hacer la transición de rojo a blanco. – meagar
Bastante justo. Pensé que solo estaba usando eso como un ejemplo. Si ese es el caso, ¡tu código es mucho más limpio que el mío! –