先了解一下什么是 Canvas?

HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。
画布是一个矩形区域,您可以控制其每一像素。
canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。

创建 Canvas 元素

 HTML5 页面添加 canvas 元素。
规定元素的 id、宽度和高度:
<canvas id="myCanvas" width="200" height="100"></canvas>

通过 JavaScript 来绘制

canvas 元素本身是没有绘图能力的。所有的绘制工作必须在 JavaScript 内部完成:
<script type="text/javascript">
var c=document.getElementById("myCanvas");
var cxt=c.getContext("2d");
cxt.fillStyle="#FF0000";
cxt.fillRect(0,0,150,75);
</script>
JavaScript 使用 id 来寻找 canvas 元素:
var c=document.getElementById("myCanvas");
然后,创建 context 对象:
var cxt=c.getContext("2d"); 
getContext("2d") 对象是内建的 HTML5 对象,拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。
下面的两行代码绘制一个红色的矩形:
cxt.fillStyle="#FF0000";
cxt.fillRect(0,0,150,75); 
fillStyle 方法将其染成红色,fillRect 方法规定了形状、位置和尺寸。
言归正传,进入渐变图形绘制。
      演示地址:进入
一、定义<canvas>样式
<style>
body {
  background: #000;
}
canvas {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
}
二、为网页<body></body>添加<canvas></canvas>元素
<canvas height="600" width="600"></canvas>
三、加入JS代码,实现绘制功能。
<script>
var canvas = document.getElementsByTagName('canvas')[0],//获取Canvas元素
    ctx = null,
    grad = null,
    body = document.getElementsByTagName('body')[0],
    color = 255;
if (canvas.getContext('2d')) {
  ctx = canvas.getContext('2d');  // 内建 HTML5对象getContext("2d"),拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。
  ctx.clearRect(0, 0, 600, 600);//清除<canvas>所有内容
  ctx.save();
  // Create radial gradient
  grad = ctx.createRadialGradient(0,0,0,0,0,600);//创建一条放射颜色渐变  grad.addColorStop(0, '#000');
  grad.addColorStop(1, 'rgb(' + color + ', ' + color + ', ' + color + ')');//在渐变中的某一点添加一个颜色变化
  // assign gradients to fill
  ctx.fillStyle = grad;
  // draw 600x600 fill
  ctx.fillRect(0,0,600,600);//fillRect 方法规定了形状、位置和尺寸。
  ctx.save();
  body. = function (event) {
    var width = window.innerWidth,
        height = window.innerHeight,
        x = event.clientX,
        y = event.clientY,
        rx = 600 * x / width,
        ry = 600 * y / height;
    var xc = ~~(256 * x / width);
    var yc = ~~(256 * y / height);
    grad = ctx.createRadialGradient(rx, ry, 0, rx, ry, 600);
    grad.addColorStop(0, '#000');
    grad.addColorStop(1, ['rgb(', xc, ', ', (255 - xc), ', ', yc, ')'].join(''));
    // ctx.restore();
    ctx.fillStyle = grad;
    ctx.fillRect(0,0,600,600);
    // ctx.save();
  };
}
</script>