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 相关文章推荐
JQuery的自定义事件代码,触发,绑定简单实例
Aug 01 Javascript
js使用html()或text()方法获取设置p标签的显示的值
Aug 01 Javascript
JavaScript中的对象与JSON
Jul 03 Javascript
H5移动端适配 Flexible方案
Oct 24 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
Apr 25 Javascript
React Native 环境搭建的教程
Aug 19 Javascript
vue awesome swiper异步加载数据出现的bug问题
Jul 03 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
Feb 22 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
Apr 15 Javascript
浅入深出Vue之自动化路由
Aug 06 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
Jul 15 Javascript
解决vuecli3中img src 的引入问题
Aug 04 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
PHP5在Apache下的两种模式的安装
2006/09/05 PHP
用文本作数据处理
2006/10/09 PHP
解析PHP计算页面执行时间的实现代码
2013/06/18 PHP
CakePHP框架Session设置方法分析
2017/02/23 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
2011/01/01 Javascript
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
2012/04/12 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
vue基于Vue2.0和高德地图的地图组件实例
2017/04/28 Javascript
jQuery实现标签子元素的添加和赋值方法
2018/02/24 jQuery
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
vue回到顶部监听滚动事件详解
2019/08/02 Javascript
vue.config.js常用配置详解
2019/11/14 Javascript
通过微信公众平台获取公众号文章的方法示例
2019/12/25 Javascript
[01:04:01]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第一场
2014/05/24 DOTA
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
2018/02/18 Python
Python实现繁?转为简体的方法示例
2018/12/18 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
anaconda如何查看并管理python环境
2019/07/05 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
2020/01/09 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
土耳其风格手工珠宝:Ottoman Hands
2019/07/26 全球购物
小学生优秀评语大全
2014/04/22 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
2014年中秋寄语
2014/08/11 职场文书
个人作风建设剖析材料
2014/10/11 职场文书
小学六一主持词开场白
2015/05/28 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
2016国庆促销广告语
2016/01/28 职场文书
区域销售大会开幕词
2016/03/04 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript
Python深度学习之实现卷积神经网络
2021/06/05 Python
Python中的变量与常量
2021/11/11 Python
Win11电脑显示本地时间与服务器时间不一致怎么解决?
2022/04/05 数码科技