这里是Js Fiddle 示例
(如果您的浏览器缺少 webkit 支持,请尝试此示例。)
控制文本外观的最简单方法可能是使用 css 定义不同的样式(或您所说的颜色),然后使用 javascript 围绕温度值文本设置 span 标签的类。
一些示例 HTML
<html>
<head>
<script src="[path to your .js file]"></script>
<link rel="stylesheet" href="[path to your .css file]" />
</head>
<body onload="initialize();">
<p>The temperature today is <span id="tempVal"></span></p>
</body>
</html>
您的 javascript 文件:
var curTemp; // this will contain the current temperature
var curClassName; // the name of the class for that temperature (reflects css code below)
var valueContainer;
function initialize()
{
valueContainer = document.getElementById("tempVal");
}
//... calculate or set the current temperature value here ...
if (curTemp < 10)
curClassName = "freezing";
else if (curTemp >= 10 && curTemp < 20)
curClassName = "cold";
else if (curTemp >= 20 && curTemp < 30)
curClassName = "warm";
else if (curTemp >= 30 && curTemp <= 40)
curClassName = "hot";
else if (curTemp > 40)
curClassName = "scorching";
valueContainer.innerHTML = curTemp + "C";
valueContainer.setAttribute("class", curClassName);
这只会留下您的 CSS 文件。现在,在不使用画布元素的情况下实现这种渐变效果的唯一方法是使用一些 webkit 属性。这些都不是普遍支持的,所以为了最大的可移植性,我会简单地使用不同的纯色而不是渐变,但这里是 webkit 示例。
#tempVal
{
font-weight: bold;
}
.freezing
{
color: blue;
}
.cold
{
background: -webkit-linear-gradient(top, lightblue, blue);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.warm
{
background: -webkit-linear-gradient(top, orange, lightblue);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.hot
{
background: -webkit-linear-gradient(top, red, orange);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.scorching
{
color: red;
}
在这里查看示例
如果您的数字没有出现渐变色,那是因为您的浏览器不支持 webkit 功能。