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 相关文章推荐
JS数组去重与取重的示例代码
Jan 24 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
May 19 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
Aug 25 Javascript
详解JavaScript UTC时间转换方法
Jan 07 Javascript
vue.js父组件使用外部对象的方法示例
Apr 25 Javascript
Javascript实现时间倒计时效果
Jul 15 Javascript
vue中使用sessionStorage记住密码功能
Jul 24 Javascript
对Vue.js之事件的绑定(v-on: 或者 @ )详解
Sep 15 Javascript
layer.confirm点击第一个按钮关闭弹出框的方法
Sep 09 Javascript
解决vue-cli 打包后自定义动画未执行的问题
Nov 12 Javascript
Vue实现手机扫描二维码预览页面效果
May 28 Javascript
Vue和Flask通信的实现
May 19 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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
下载文件的点击数回填
2006/10/09 PHP
PHP 函数语法介绍一
2009/06/14 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
使用laravel指定日志文件记录任意日志
2019/10/17 PHP
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
javascript中的undefined 与 null 的区别  补充篇
2010/03/17 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
2013/04/28 Javascript
js每隔5分钟执行一次ajax请求的实现方法
2013/11/27 Javascript
js对象转json数组的简单实现案例
2014/02/28 Javascript
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
JS使用parseInt解析数字实现求和的方法
2015/08/05 Javascript
分享我的jquery实现下拉菜单心的
2015/11/29 Javascript
不得不分享的JavaScript常用方法函数集(下)
2015/12/25 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
JavaScript实现鼠标点击导航栏变色特效
2017/02/08 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
JSON是什么?有哪些优点?JSON和XML的区别?
2019/04/29 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
深入理解python中的select模块
2017/04/23 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
Python实现http接口自动化测试的示例代码
2020/10/09 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
Python如何使用ConfigParser读取配置文件
2020/11/12 Python
药物学专业学生的自我评价
2013/10/27 职场文书
经贸日语毕业生自荐信
2013/11/03 职场文书
财务管理个人自荐书范文
2013/11/24 职场文书
京剧自荐信
2014/01/26 职场文书
安全大检查实施方案
2014/02/22 职场文书
医院保洁服务方案
2014/06/11 职场文书
信息管理与信息系统专业求职信
2014/06/21 职场文书
欢送领导祝酒词
2015/08/12 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
python 逐步回归算法
2021/04/06 Python
TV动画《间谍过家家》公开PV
2022/03/20 日漫