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的原生方法获取数组中的最大(最小)值
Dec 19 Javascript
火狐下table中创建form导致两个table之间出现空白
Sep 02 Javascript
获取select元素被选中的文本内容的js代码
Jan 29 Javascript
用Jquery实现滚动新闻
Feb 12 Javascript
jquery无法设置checkbox选中即没有变成选中状态
Mar 27 Javascript
Jquery给基本控件的取值、赋值示例
May 23 Javascript
JQuery点击行tr实现checkBox选中的简单实例
May 26 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
Jul 07 Javascript
浅谈javascript中执行环境(作用域)与作用域链
Dec 08 Javascript
关于vue状态过渡transition不起作用的原因解决
Apr 09 Javascript
js实现旋转木马轮播图效果
Jan 10 Javascript
ztree+ajax实现文件树下载功能
May 18 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 URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
php之Smarty模板使用方法示例详解
2014/07/08 PHP
Codeigniter检测表单post数据的方法
2015/03/21 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
php实现基于PDO的预处理示例
2017/03/28 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
JMenuTab简单使用说明
2008/03/13 Javascript
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
js实现横向伸展开的二级导航菜单代码
2015/08/28 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
微信小程序 for 循环详解
2016/10/09 Javascript
妙用缓存调用链实现JS方法的重载
2018/04/30 Javascript
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
小程序如何写动态标签的实现方法
2020/02/05 Javascript
python thread 并发且顺序运行示例
2009/04/09 Python
wxPython中文教程入门实例
2014/06/09 Python
python快速查找算法应用实例
2014/09/26 Python
利用python操作SQLite数据库及文件操作详解
2017/09/22 Python
Python使用pyserial进行串口通信的实例
2019/07/02 Python
使用Python在Windows下获取USB PID&amp;VID的方法
2019/07/02 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
html5教程实现Photoshop渐变色效果
2013/12/04 HTML / CSS
英国汽车和货车租赁网站:Hertz英国
2016/09/02 全球购物
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
写出二分查找算法的两种实现
2013/05/13 面试题
北京鼎普科技股份有限公司软件测试面试题
2012/04/07 面试题
通信工程毕业生自荐信
2013/11/01 职场文书
单位个人查摆问题及整改措施
2014/10/28 职场文书
安全保证书怎么写
2015/02/28 职场文书
幼儿园教师辞职信
2019/06/21 职场文书