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 相关文章推荐
Javascript MD4
Dec 20 Javascript
判断用户是否在线的代码
Mar 05 Javascript
JavaScript调用浏览器打印功能实例分析
Jul 17 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
Nov 07 Javascript
原生js实现自由拖拽弹窗代码demo
Jun 29 Javascript
JS 循环li添加点击事件 (闭包的应用)
Dec 10 Javascript
easyui combogrid实现本地模糊搜索过滤多列
May 13 Javascript
利用JS判断客户端类型你应该知道的四种方法
Dec 22 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
Jan 02 Javascript
ES6 更易于继承的类语法的使用
Feb 11 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
Mar 19 jQuery
Vue与React的区别和优势对比
Dec 18 Vue.js
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
3.从实例开始
2006/10/09 PHP
yii框架通过控制台命令创建定时任务示例
2014/04/30 PHP
php+ajax实现无刷新动态加载数据技术
2015/04/28 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
php使用pecl方式安装扩展操作示例
2019/08/12 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
css transform 3D幻灯片特效实现步骤解读
2013/03/27 Javascript
Jquery通过Ajax访问XML数据的小例子
2013/11/18 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
NodeJs使用Mysql模块实现事务处理实例
2017/05/31 NodeJs
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
jquery版轮播图效果和extend扩展
2017/07/18 jQuery
用nodejs实现json和jsonp服务的方法
2017/08/25 NodeJs
微信小程序实现运动步数排行功能(可删除)
2018/07/05 Javascript
小程序图片剪裁加旋转的示例代码
2018/07/10 Javascript
vue左侧菜单,树形图递归实现代码
2018/08/24 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
[01:11:27]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Optic
2018/04/03 DOTA
浅析Python中的多重继承
2015/04/28 Python
详解python 发送邮件实例代码
2016/12/22 Python
使用Python获取并处理IP的类型及格式方法
2018/11/01 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
2019/07/09 Python
Python如何将模块打包并发布
2020/08/30 Python
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
西班牙鞋子和箱包在线销售网站:zapatos.es
2020/02/17 全球购物
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
企业宣传口号
2014/06/12 职场文书
会计人员演讲稿
2014/09/11 职场文书
奖学金个人总结
2015/03/04 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
《角的度量》教学反思
2016/02/18 职场文书
Vue接口封装的完整步骤记录
2021/05/14 Vue.js
《堡垒之夜》联动《刺客信条》 4月7日正式上线
2022/04/06 其他游戏