使用JS逐渐淡化为颜色

时间:2016-10-06 14:56:59

标签: javascript canvas

按下按钮后,我尝试使用Javascript逐渐将其颜色(淡入淡出)从黄色变为白色。可悲的是我的代码不起作用。你能帮我弄清楚代码有什么问题以及如何修复它吗?

我刚刚开始学习Javascript。对不起,如果这个问题很愚蠢。提前谢谢。

这是我的代码:

<!DOCTYPE html>
<html>
<body>

<canvas id="myCanvas" width="300" height="150" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas> // create canvas to work with

<button onclick="fade(ctx)">Change the colour!</button>

<script>

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d"); //set context
ctx.rect(20, 20, 150, 100); // draw a rectangle
ctx.stroke(); // with border
ctx.fillStyle="#FFFF00"; // fill with yellow
ctx.fillRect(20,20,150,100); 

function fade(ctx) { // fade function responsible for changing colour

 var dom = getElementById(ctx), level = 1; // new object based on rectangle object, initial iterator is set to 1

 function step() { // inner step function
   var h = level.toString(16);
   dom.fillStyle = '#FFFF' + h + h; // construct a new colour using h variable

   if (level < 15) {
     level += 1;
     setTimeout(step, 100); // do this after every 100 ms
   }

  }

  setTimeout(step, 100);
}

</script> 

</body>
</html>

1 个答案:

答案 0 :(得分:0)

尽管如此,你几乎可以使用它。您正在将上下文传递给函数,因此不需要getElementById(ctx)位。实际上,这会给你一个错误,所以从你的代码中删除该行。而是直接在ctx变量上设置fillStyle,如下所示:

ctx.fillStyle = '#FFFF' + h + h; 

并且您还需要重绘矩形,因此请添加以下行:

ctx.fillRect(20,20,150,100);
设置颜色后

。这样就可以了。