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 Boolean、Nnumber、String 强制类型转换的区别详细介绍
Dec 13 Javascript
jQuery实现页面滚动时动态加载内容的方法
Mar 20 Javascript
js操作DOM--添加、删除节点的简单实例
Jul 08 Javascript
javascript与jquery动态创建html元素示例
Jul 25 Javascript
js+html5实现复制文字按钮
Jul 15 Javascript
基于iScroll实现下拉刷新和上滑加载效果
Jul 18 Javascript
小程序封装路由文件和路由方法(5种全解析)
May 26 Javascript
elementUi vue el-radio 监听选中变化的实例代码
Jun 28 Javascript
Vue路由管理器Vue-router的使用方法详解
Feb 05 Javascript
Vue仿Bibibili首页的问题
Jan 21 Vue.js
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
Jan 29 Javascript
vue使用wavesurfer.js解决音频可视化播放问题
Apr 04 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
php foreach 参数强制类型转换的问题
2010/12/10 PHP
PHP 设置MySQL连接字符集的方法
2011/01/02 PHP
PHP的加密方式及原理
2012/06/14 PHP
PHP自动识别字符集并完成转码详解
2013/08/02 PHP
php mysql_real_escape_string函数用法与实例教程
2013/09/30 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
JQuery获取当前屏幕的高度宽度的实现代码
2011/07/12 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
javascript结合fileReader 实现上传图片
2015/01/30 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
Angular 通过注入 $location 获取与修改当前页面URL的实例
2017/05/31 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
在Vue 中实现循环渲染多个相同echarts图表
2020/07/20 Javascript
Python查询Mysql时返回字典结构的代码
2012/06/18 Python
python基础教程之获取本机ip数据包示例
2014/02/10 Python
Python 编码规范(Google Python Style Guide)
2018/05/05 Python
解决django 新增加用户信息出现错误的问题
2019/07/28 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
python实现mean-shift聚类算法
2020/06/10 Python
如何使用canvas绘制可移动网格的示例代码
2020/12/14 HTML / CSS
德国百年厨具品牌WMF美国站:WMF美国
2016/09/12 全球购物
护理学中专毕业生求职信
2013/11/11 职场文书
庆元旦迎新年广播稿
2014/02/18 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
会计的岗位职责
2014/03/15 职场文书
签约仪式策划方案
2014/06/02 职场文书
公司合作意向书范文
2014/07/30 职场文书
简单且有用的Python数据分析和机器学习代码
2021/07/02 Python
Pandas 稀疏数据结构的实现
2021/07/25 Python
vue实现列表拖拽排序的示例代码
2022/04/08 Vue.js
SpringBoot详解执行过程
2022/07/15 Java/Android