您可以计算两种颜色之间的 rgb/a 差异,并在当前白天增加/减少它。首先,我们需要为我们完成颜色解析部分的东西。
var parseColor = function (start, end, now) {
return [
start[0] + now * (end[0] - start[0]) | 0,
start[1] + now * (end[1] - start[1]) | 0,
start[2] + now * (end[2] - start[2]) | 0,
(start[3] && end[3]) ? (start[3] + now * (end[3] - start[3]) | 0) : 1
];
};
现在,让我们围绕日期计算和颜色解析定义一个非常简单的包装器。
var daytimeColor = function (start, end, date) {
date = date || new Date();
var hour = date.getHours();
var minute = date.getMinutes();
var now = hour * minute / 1440;
var rgba = parseColor(start, end, now);
return 'rgba(' + rgba.join() + ')';
};
最后但同样重要的是调用它并将您的颜色数组传递给:
var start = [255, 0, 0];
var end = [0, 0, 255];
document.body.style.backgroundColor = daytimeColor(start, end);
http://jsfiddle.net/yckart/gyX3K/