我刚刚发现基于时间的背景变化,但无法重复

时间:2014-12-16 18:48:48

标签: javascript html css

最奇怪的是,每个人都使用document.body.style.background很好,所以我不明白为什么我不能改变这个div的风格

Herr的代码:

var wrapper = document.getElementById("wrapper");

var showTime = function() {
    var time = new Date,
        hours = time.getHours().toString(),
        minutes = time.getMinutes().toString(),
        seconds = time.getSeconds().toString();


    if (hours < 10) {
        hours = "0" + hours;
    }
    if (minutes < 10) {
        minutes = "0" + minutes;
    }
    if (seconds < 10) {
        seconds = "0" + seconds;
    }

    wrapper.style.background = "#" + hours + minutes + seconds;

}

setInterval(showTime, 1000);

1 个答案:

答案 0 :(得分:1)

代码运行得很好,但为了澄清你对背景对象做了什么,你可以明确地说&#34; backgroundColor&#34;

您可能遇到的问题是您每秒都会为背景设置十六进制颜色,但由于颜色太相似,您不会每秒都注意到任何重大变化。您可以使用浏览器扩展来检测以下颜色: ColorZillas Chrome扩展程序。

https://chrome.google.com/webstore/detail/colorzilla/bhlhnicpbhignbdhedgjhgdocnmhomnp

红色阴影仅每小时修改一次,只有一位数字,每分钟绿色,再次只有一位数。蓝色变化最大,但除非您在开始时再次屏幕拍摄,并且在15秒左右后再次拍摄,否则仍然很难发现差异。

这也仅使用了一小部分色谱,因为在十六进制中数量不会超过60,而在几小时的情况下,它不会超过12或24。

如果您每秒都在寻找更大的变化,您可以在秒上计算出一些数学并使用rgb或转换为十六进制。这样你就可以每秒改变3-4个阴影,而不只是一个。

示例:

var percentOfMin = seconds/60;
var blue = Math.round(255 * percentOfMin);

等。等

style.backgroundColor = "rgb(" + red + "," + green + "," + blue + ")";

这种方式每秒都可以处理整个蓝色光谱的均匀部分,绿色的分钟和红色的小时数。