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 相关文章推荐
JavaScript脚本性能的优化方法
Feb 02 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
Jul 03 Javascript
JavaScript实现快速排序的方法
Jul 31 Javascript
Node.js中Request模块处理HTTP协议请求的基本使用教程
Mar 31 Javascript
jQuery选择器及jquery案例详解(必看)
May 20 Javascript
基于jQuery实现火焰灯效果导航菜单
Jan 04 Javascript
jQuery+ajax实现修改密码验证功能实例详解
Jul 06 jQuery
vue按需加载组件webpack require.ensure的方法
Dec 13 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
Dec 25 Javascript
node.js文件操作系统实例详解
Nov 05 Javascript
在vue中使用image-webpack-loader实例
Nov 12 Javascript
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
Jan 29 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
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
discuz程序的PHP加密函数原理分析
2011/08/05 PHP
php实现memcache缓存示例讲解
2013/12/04 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
2015/10/21 PHP
PHP内存缓存功能memcached示例
2016/10/19 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
Google AJAX 搜索 API实现代码
2010/11/17 Javascript
jquery连缀语法如何实现
2012/11/29 Javascript
jQuery判断iframe中元素是否存在的方法
2013/05/11 Javascript
javascript检查表单数据是否改变的方法
2013/07/30 Javascript
JavaScript匿名函数与委托使用示例
2014/07/22 Javascript
jquery 取子节点及当前节点属性值的方法
2014/08/24 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
2014/10/17 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
JS和JQuery实现雪花飘落效果
2017/11/30 jQuery
Vue父子组件之间的通信实例详解
2018/09/28 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
2018/12/11 jQuery
jQuery实现鼠标移入显示蒙版效果
2020/01/11 jQuery
TensorFlow实现RNN循环神经网络
2018/02/28 Python
python实现决策树ID3算法的示例代码
2018/05/30 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
wxPython实现分隔窗口
2019/11/19 Python
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
Rosetta Stone官方网站:语言学习
2019/01/05 全球购物
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
材料采购员岗位职责
2013/12/17 职场文书
学校后勤人员职责
2013/12/27 职场文书
护理个人求职信范文
2014/01/08 职场文书
人力资源部经理岗位职责规定
2014/02/23 职场文书
打造高效课堂实施方案
2014/03/22 职场文书
初中生操行评语大全
2014/04/24 职场文书
禁止高声喧哗的标语
2014/06/11 职场文书
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
电力培训学习心得体会
2016/01/11 职场文书
三星 3nm 芯片将于第二季度开始量产
2022/04/29 数码科技