Javascript 根据一天中的时间不断改变背景颜色

Javascript 根据一天中的时间不断改变背景颜色,javascript,jquery,Javascript,Jquery,我想写一个脚本,其中包括: 每1秒不断更改背景色。 当您第一次访问网页时,开始颜色是根据一天中的时间设置的。因此,如果我每天早上7点或接近这个时间访问该网站,无论我的浏览器是否打开了10个小时,它都将是红色的。 如果没有大量的IF语句,我怎么能做到这一点呢 看看这里:上面说有16776960种不同的颜色,我不需要那么多,但我如何才能将其减少到一个设定的间隔,使其每秒通过彩虹的颜色消失?制作一个每小时的颜色数组,每小时一个 var hourly = "#ff00cc,red,green,blue.

我想写一个脚本,其中包括:

每1秒不断更改背景色。 当您第一次访问网页时,开始颜色是根据一天中的时间设置的。因此,如果我每天早上7点或接近这个时间访问该网站,无论我的浏览器是否打开了10个小时,它都将是红色的。 如果没有大量的IF语句,我怎么能做到这一点呢


看看这里:上面说有16776960种不同的颜色,我不需要那么多,但我如何才能将其减少到一个设定的间隔,使其每秒通过彩虹的颜色消失?

制作一个每小时的颜色数组,每小时一个

var hourly = "#ff00cc,red,green,blue...".split(",")
然后将背景设置为与当前小时匹配的元素:

var d = new Date();
var h = d.getHours();
$('body').css('background-color',hourly[h])
将此脚本放在页面顶部,重新加载时将设置颜色


这并不是不断变化的,但它为您提供了一个起点。

每小时制作一个彩色阵列,每小时一个

var hourly = "#ff00cc,red,green,blue...".split(",")
然后将背景设置为与当前小时匹配的元素:

var d = new Date();
var h = d.getHours();
$('body').css('background-color',hourly[h])
将此脚本放在页面顶部,重新加载时将设置颜色

这并不是不断变化的,但它为您提供了一个起点。

这是有效的:

首先,让我们创建将执行此操作的函数:

    "use strict";
            function changeColor() {
    //rgb
    console.log('event fired');
    var colors = [0, 0, 0];
    var hour = new Date().getHours();
    console.log(hour);

    //Will get an valid rgb color
    var color = parseInt(255/24*hour);
    console.log(color);
    for(var i = 0; i < colors.length; i++) {
        colors[i] = color;
    }
    //add the color to the element you want:
    document.body.style.backgroundColor = "rgb("+colors[0] + "," + colors[1] + "," + colors[2] + ")";
    console.log("event fired. color get:" + colors[0] + colors[1] + colors[2]);
  }
这项工作:

首先,让我们创建将执行此操作的函数:

    "use strict";
            function changeColor() {
    //rgb
    console.log('event fired');
    var colors = [0, 0, 0];
    var hour = new Date().getHours();
    console.log(hour);

    //Will get an valid rgb color
    var color = parseInt(255/24*hour);
    console.log(color);
    for(var i = 0; i < colors.length; i++) {
        colors[i] = color;
    }
    //add the color to the element you want:
    document.body.style.backgroundColor = "rgb("+colors[0] + "," + colors[1] + "," + colors[2] + ")";
    console.log("event fired. color get:" + colors[0] + colors[1] + colors[2]);
  }

您可以计算两种颜色之间的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);

您可以计算两种颜色之间的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);

不,对不起,我不知道从哪里开始,我只是在寻找从哪里开始的提示,以及如何不断地改变?你真的希望人们一次打开这个页面几个小时吗?我会创建一个索引数组,以小时为键,颜色代码为值。然后我可以得到当前小时的颜色。这与设置间隔相结合,至少每小时重复一次。不,只是当你打开它时,它会在颜色之间产生很好的褪色效果。我曾经这样做过,作为时钟上的环境信息。我最终使用了一张从网上找到的渐变中抓取的颜色地图。不,对不起,我不知道从哪里开始,我只是在寻找从哪里开始的提示,以及如何构建不断变化的渐变?你真的希望人们一次打开这个页面几个小时吗?我会创建一个索引数组,以小时为键,颜色代码为值。然后我可以得到当前小时的颜色。这与设置间隔相结合,至少每小时重复一次。不,只是当你打开它时,它会在颜色之间产生很好的褪色效果。我曾经这样做过,作为时钟上的环境信息。我最终使用了一张从网上找到的渐变中抓取的颜色地图。非常感谢,这真的很接近我想要的。尽管有没有办法进一步细分,使颜色从30分钟改为每1秒一次?是的。只需将setInterval更改为:setIntervalchangeColor,1000。请注意,行:var color=parseInt255/24*hour;console.logcolor;forvar i=0;i