JS基于HTML5的canvas标签实现炫目的色相球动画效果实例


Posted in Javascript onAugust 24, 2016

本文实例讲述了JS基于HTML5的canvas标签实现色相球效果。分享给大家供大家参考,具体如下:

运行效果截图如下:

JS基于HTML5的canvas标签实现炫目的色相球动画效果实例

具体代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>JS canvas标签制作色相球</title>
</head>
<body>
<canvas></canvas>
<script type="text/javascript">
var canvas,ctx,max,p,count;
window.onload=function(){
 var a,b,r;
 canvas = document.getElementsByTagName('canvas')[0];
 ctx = canvas.getContext('2d');
 canvas.width=canvas.height=400;
 ctx.fillRect(0,0,400,400);
 max=80;
 count=150;
 p=[];
 r=0;
 for(a=0;a<max;a++){
  p.push([Math.cos(r),Math.sin(r),0]);
  r+=Math.PI*2/max;
 }
 for(a=0;a<max;a++)p.push([0,p[a][0],p[a][1]]);
 for(a=0;a<max;a++)p.push([p[a][1],0,p[a][0]]);
 rus();
};
function rus(){
 var a,b,c,d,e,s,tim,p2,xp,yp,xp2,yp2,x,y,z,x1,y1,z1;
 ctx.globalCompositeOperation = "source-over";
 ctx.fillStyle="rgba(0,0,0,0.03)";
 ctx.fillRect(0,0,canvas.width,canvas.height);
 ctx.globalCompositeOperation = "lighter";
 tim=count/5;
 for(e=0;e<3;e++){
  tim*=1.7;
  s=1-e/3;
  a=tim/59;
  yp=Math.cos(a);
  yp2=Math.sin(a);
  a=tim/23;
  xp=Math.cos(a);
  xp2=Math.sin(a);
  p2=[];
  for(a=0;a<p.length;a++){
   x=p[a][0];y=p[a][1];z=p[a][2];
   y1=y*yp+z*yp2;
   z1=y*yp2-z*yp;
   x1=x*xp+z1*xp2;
   z=x*xp2-z1*xp;
   z1=Math.pow(2,z*s);
   x=x1*z1;
   y=y1*z1;
   p2.push([x,y,z]);
  }
  s*=120;
  for(d=0;d<3;d++){
   for(a=0;a<max;a++){
    b=p2[d*max+a];
    c=p2[((a+1)%max)+d*max];
    ctx.beginPath();
    ctx.strokeStyle="hsla("+((a/max*360)|0)+",70%,60%,0.15)";
    ctx.lineWidth=Math.pow(6,b[2]);
    ctx.lineTo(b[0]*s+200,b[1]*s+200);
    ctx.lineTo(c[0]*s+200,c[1]*s+200);
    ctx.stroke();
   }
  }
 }
 count++;
 requestAnimationFrame(rus);
}
</script>
</body>
</html>

PS:由于这里使用了HTML5的相关技术,建议读者使用火狐、谷歌、opera等支持HTML5效果较好的浏览器运行该上述代码。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
jquery中获得$.ajax()事件返回的值并添加事件的方法
Apr 15 Javascript
一个轻量级的javascript库 pj介绍
Dec 19 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
Apr 15 Javascript
JS获取键盘上任意按键的值(实例代码)
Nov 12 Javascript
javascript制作的网页侧边弹出框思路及实现代码
May 21 Javascript
学习Bootstrap滚动监听 附调用方法
Jul 02 Javascript
基于javascript实现按圆形排列DIV元素(一)
Dec 02 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
Jul 28 Javascript
微信小程序实现搜索历史功能
Mar 26 Javascript
多个vue子路由文件自动化合并的方法
Sep 03 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
Nov 19 Javascript
JS实现简单打字测试
Jun 24 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
Aug 24 #Javascript
详解Bootstrap的iCheck插件checkbox和radio
Aug 24 #Javascript
JS简单实现无缝滚动效果实例
Aug 24 #Javascript
JS动态加载脚本并执行回调操作
Aug 24 #Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
Aug 24 #Javascript
归纳下js面向对象的几种常见写法总结
Aug 24 #Javascript
BootStrap iCheck插件全选与获取value值的解决方法
Aug 24 #Javascript
You might like
php 数组的一个悲剧?
2011/05/11 PHP
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
php中一个完整表单处理实现代码
2011/11/10 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
2013/06/29 PHP
PHP5.3以上版本安装ZendOptimizer扩展
2015/03/27 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
IE6与IE7中,innerHTML获取param的区别
2009/03/15 Javascript
js form 验证函数 当前比较流行的错误提示
2009/06/23 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
js简单实现用户注册信息的校验代码
2013/11/15 Javascript
php is_numberic函数造成的SQL注入漏洞
2014/03/10 Javascript
JavaScript中匿名、命名函数的性能测试
2014/09/04 Javascript
JavaScript forEach()遍历函数使用及介绍
2015/07/08 Javascript
input点击后placeholder中的提示消息消失
2016/01/15 Javascript
animate 实现滑动切换效果【实例代码】
2016/05/05 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
2016/06/08 Javascript
几种响应式文字详解
2017/05/19 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
Vue 中使用lodash对事件进行防抖和节流操作
2020/07/26 Javascript
[00:32]DOTA2上海特级锦标赛 COL战队宣传片
2016/03/04 DOTA
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
python实现按关键字筛选日志文件
2019/12/24 Python
python 如何在测试中使用 Mock
2021/03/01 Python
Notino匈牙利:购买香水和化妆品
2019/04/12 全球购物
升国旗仪式主持词
2014/03/19 职场文书
市场部经理岗位职责
2014/04/10 职场文书
企业文化理念标语
2014/06/10 职场文书
党性教育心得体会
2014/09/03 职场文书
关于长城的导游词
2015/01/30 职场文书
保洁员岗位职责
2015/02/04 职场文书
2016年会开场白台词
2015/06/01 职场文书
高一地理教学工作总结
2015/08/12 职场文书