| Код | var t = 1; var n = 10; var i = 0;
var fading = false;
function fade(sFadeFinishColor) { sFadeStartColor = document.body.style.backgroundColor;
fading = setInterval(function() { if (i<=n) { i++; document.body.style.backgroundColor = getFadeMiddleColor(sFadeStartColor, sFadeFinishColor); } else { fading = clearInterval(fading); i = 0; } }, t); }
function getFadeMiddleColor(sFadeStartColor, sFadeFinishColor) { if(window.XMLHttpRequest) { var aRGBStart = sFadeStartColor.slice(4, -1).split(/,\s/); var aRGBFinish = sFadeFinishColor.slice(4, -1).split(/,\s/); } else { var aRGBStart = sFadeStartColor.slice(1).match(/.{2}/g); var aRGBFinish = sFadeFinishColor.slice(1).match(/.{2}/g); }
if(window.XMLHttpRequest) return 'rgb('+ Math.floor(aRGBStart[0] * ((n - i)/n) + aRGBFinish[0] * (i/n)) + ',' + Math.floor(aRGBStart[1] * ((n - i)/n) + aRGBFinish[1] * (i/n)) + ',' + Math.floor(aRGBStart[2] * ((n - i)/n) + aRGBFinish[2] * (i/n)) +')'; else return 'rgb('+ Math.floor(('0x' + aRGBStart[0]) * ((n - i)/n) + ('0x' + aRGBFinish[0]) * (i/n)) + ',' + Math.floor(('0x' + aRGBStart[1]) * ((n - i)/n) + ('0x' + aRGBFinish[1]) * (i/n)) + ',' + Math.floor(('0x' + aRGBStart[2]) * ((n - i)/n) + ('0x' + aRGBFinish[2]) * (i/n)) +')'; }
|
код выполняется идеально под firefox, один раз под ie(при повторном выполнении - завершается с ошибкой) и вообще не выполняется в опере(из-за определения aRGBStart, aRGBStart - они не вовзращают нужного значения). Собтно, хелп |