canvas作为H5新增元素,是借助Web API来实现动画的。 可以使用requestAnimationFrame更精准的控制动画

示例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
	*{
		margin:0;
		padding:0;
	}
	</style>
</head>
<body>
	<canvas id="canvas" width="700" height="550"></canvas>
	<script type="text/javascript">
		let canvas = document.getElementById("canvas");
		let ctx = canvas.getContext("2d");
		let left = 0;
		let timer = setInterval(function(){
			ctx.clearRect(0,0,700,550);
			ctx.beginPath();
			ctx.fillStyle = "#ccc";
			ctx.fillRect(left,0,100,100);
			ctx.stroke();
			if(left>700){
				clearInterval(timer);
			}
			left += 1;
		},16);
	</script>
</body>
</html>

注释:通过getContext()获取元素的绘制对象,通过clearRect不断清空画布并在新的位置上使用fillStyle绘制新矩形内容实现页面动画效果。

比较

Canvas主要优势是可以应对页面中多个动画元素渲染较慢的情况,完全通过javascript来渲染控制动画的执行。可用于实现较复杂动画。