JavaScript+html5 canvas制作色彩斑斓的正方形效果


Posted in Javascript onJanuary 27, 2016

本文实例讲述了JavaScript+html5 canvas制作色彩斑斓的正方形效果。分享给大家供大家参考,具体如下:

运行效果截图如下:

JavaScript+html5 canvas制作色彩斑斓的正方形效果

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>

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程序设计有所帮助。

Javascript 相关文章推荐
一页面多XMLHttpRequest对象
Jan 22 Javascript
基于jquery的表头固定的若干方法
Jan 27 Javascript
json原理分析及实例介绍
Nov 29 Javascript
window.open()详解及浏览器兼容性问题示例探讨
May 29 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
Nov 10 Javascript
JQuery中Ajax的操作完整例子
Mar 07 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
Apr 20 Javascript
Vue2.0父子组件传递函数的教程详解
Oct 16 Javascript
详细分析单线程JS执行问题
Nov 22 Javascript
了解javascript中变量及函数的提升
May 27 Javascript
Node.js API详解之 dgram模块用法实例分析
Jun 05 Javascript
原生js实现下拉框选择组件
Jan 20 Javascript
APP中javascript+css3实现下拉刷新效果
Jan 27 #Javascript
jQuery EasyUi实战教程之布局篇
Jan 26 #Javascript
jQuery Easyui实现左右布局
Jan 26 #Javascript
AngualrJS中的Directive制作一个菜单
Jan 26 #Javascript
js实现网页图片延时加载 提升网页打开速度
Jan 26 #Javascript
详解javascript new的运行机制
Jan 26 #Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
Jan 26 #Javascript
You might like
劣质的PHP代码简化
2010/02/08 PHP
php数据库连接时容易出错的特殊符号问题
2010/09/01 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
php制作中间带自己定义图片二维码的方法
2014/01/27 PHP
JavaScript实现Sleep函数的代码
2007/03/04 Javascript
Google韩国首页图标动画效果
2007/08/26 Javascript
另一个javascript小测验(代码集合)
2011/07/27 Javascript
jquery 字符串切割函数substring的用法说明
2014/02/11 Javascript
一个字符串反转函数可实现字符串倒序
2014/09/15 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
Js的Array数组对象详解
2016/02/22 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
2016/10/14 Javascript
详解js的异步编程技术的方法
2017/02/09 Javascript
十大热门的JavaScript框架和库
2017/03/21 Javascript
详解VUE中v-bind的基本用法
2017/07/13 Javascript
Angular @HostBinding()和@HostListener()用法
2018/03/05 Javascript
Node.js Buffer用法解读
2018/05/18 Javascript
小程序开发基础之view视图容器
2018/08/21 Javascript
浅谈Vue组件及组件的注册方法
2018/08/24 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
Python运算符重载用法实例分析
2015/06/01 Python
python中urlparse模块介绍与使用示例
2017/11/19 Python
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
Python中生成一个指定长度的随机字符串实现示例
2019/11/06 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
pycharm如何实现跨目录调用文件
2020/02/28 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
英国工具中心:UK Tool Centre
2017/07/10 全球购物
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
程序集与命名空间有什么不同
2014/07/25 面试题
初中生自我鉴定
2014/02/04 职场文书
2014社区健康教育工作总结
2014/12/16 职场文书
应届生简历自我评价
2015/03/11 职场文书
运动会广播稿100字
2015/08/19 职场文书