HTML5 Canvas实现动态彩色方块动画详解
作者:白露时间:2026-10-29 20:59:05浏览:131
本文介绍如何使用HTML5 Canvas与JavaScript实现一个色彩斑斓的动态正方形动画效果。通过控制透明度、延时渲染及Canvas API操作,展示方块逐层生成的视觉呈现,适合前端开发者学习Canvas绘图与动画技巧。
HTML5 Canvas动态彩色方块效果实现
本文详细介绍如何利用JavaScript结合HTML5 Canvas技术,实现一个色彩丰富的动态正方形动画效果。该示例旨在为读者提供实践参考,帮助理解Canvas绘图与动画控制的基本方法。
具体的运行效果如下图所示:

HTML结构文件 index.html 代码如下:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<title>canvas中的透明度</title>
<style type="text/css">
#canvas {
background:black; margin-top:100px; margin-left:200px;
}
</style>
</head>
<body>
<canvas id="canvas" width="500px" height="500px" ></canvas>
</body>
<script type="text/javascript" src="canvas.js"></script>
<script type="text/javascript">
cache = {};
var offsetX = 50,
offsetY = 20;
cache.context = dyl.createContext('canvas');
for(var i=0; i<10; i++) {
for(var j=0; j<10; j++) {
var alpha = j * 0.1 + 0.1;
(function(i, j ,alpha) {
setTimeout(function() {
dyl.rect(dyl.createColor(), i*50, j*50, 100, 100, alpha);
}, 100*j*i);
})(i, j ,alpha);
}
}
</script>
</html>
JavaScript逻辑文件 canvas.js 代码如下:
(function() {
var dyl = {cache: {}};
dyl.setContext = function(context) {
dyl.cache._context = context;
return context;
};
dyl.getDom = function(id) {
return document.getElementById(id);
};
dyl._getContext = function() {
return dyl.cache._context;
};
dyl.save = function() {
var context = dyl._getContext();
context ? context.save() : void(0);
};
dyl.restore = function() {
var context = dyl._getContext();
context ? context.restore() : void(0);
};
dyl.createContext = function(canvasID) {
var canvas = this.getDom(canvasID);
if(!canvas) {
return null;
}
return dyl.setContext(canvas.getContext("2d"));
};
dyl.createColor = function() {
var color = "rgb(";
color += Math.round(Math.random()*255);
color += ",";
color += Math.round(Math.random()*255);
color += ",";
color += Math.round(Math.random()*255);
color += ")";
return color;
};
dyl.addImg = function(img, x, y) {
var context = dyl._getContext();
if(!img || !context) {
return;
}
if(typeof img === "string") {
var oImg = new Image();
oImg.src = img;
oImg.onload = function() {
context.drawImage(oImg, x, y);
}
return;
}
context.drawImage(img, x, y);
};
dyl.rect = function(color, x, y, width, height, alpha) {
var context = dyl._getContext();
if(!context) {
return;
}
context.save();
context.fillStyle = color;
context.globalAlpha = alpha ? alpha : 1;
context.fillRect(x, y, width, height);
context.restore();
};
dyl.circle = function(color, x, y, r, alpha) {
var context = dyl._getContext();
context.save();
context.fillStyle = color;
context.beginPath();
context.globalAlpha = alpha ? alpha : 1;
context.arc(x, y, r, 0, 2*Math.PI);
context.fill();
context.stroke();
};
dyl.clearRect = function(x, y, width, height) {
var context = dyl._getContext();
if(!context) {
return;
}
context.clearRect(x, y, width, height);
};
dyl.scale = function(x, y) {
var context = dyl._getContext();
if(!context) {
return;
}
x = x ? x : 1;
y = y ? y : 1;
context.scale(x, y);
};
if(!window.dyl) {
window.dyl = dyl;
}
})();
若读者对更多JavaScript特效感兴趣,可进一步查阅本站相关专题,包括《jQuery动画与特效用法总结》、《jQuery常见经典特效汇总》以及《JavaScript动画特效与技巧汇总》等文章。
希望上述内容能对大家掌握JavaScript编程有所帮助。
作者最新文章
AOS.js 动画不触发怎么办?排查 DOM 加载与移动端兼容问题
2026-11-05 17:02:26
sigma.js 怎么实现节点点击、拖拽与悬停提示交互
2026-11-05 15:03:27
Matter.js 与 PixiJS/Three.js 集成:分离物理计算与渲染
2026-11-05 13:43:48
主流JS弹幕库选型指南:Danmaku.js等库的功能与体积对比
2026-11-05 09:28:19
JavaScript点击事件监听与交互效果实例
2026-11-05 09:10:19
