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 相关文章推荐
js FLASH幻灯片字符串中有连接符&的处理方法
Mar 01 Javascript
dotopAlert 提示用户需安装播放器的代码
Sep 17 Javascript
关于jquery中全局函数each使用介绍
Dec 10 Javascript
jQuery结合ajax实现动态加载文本内容
May 19 Javascript
自定义require函数让浏览器按需加载Js文件
Nov 24 Javascript
bootstrap table配置参数例子
Jan 05 Javascript
基于javascript实现数字英文验证码
Jan 25 Javascript
vue用addRoutes实现动态路由的示例
Sep 15 Javascript
微信小程序 自定义复选框实现代码实例
Sep 04 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
Nov 03 Javascript
vant中的toast轻提示实现代码
Nov 04 Javascript
原生JavaScript实现购物车
Jan 10 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
新52大事件
2020/03/03 欧美动漫
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
2款PHP无限级分类实例代码
2015/11/11 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
2019/12/13 PHP
简单JS代码压缩器
2006/10/12 Javascript
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
JS实现一键回顶功能示例代码
2013/10/28 Javascript
JavaScript实现生成GUID(全局统一标识符)
2014/09/05 Javascript
jQuery中的ajax async同步和异步详解
2015/09/29 Javascript
Javascript实现跑马灯效果的简单实例
2016/05/31 Javascript
Node.js 实现简单的接口服务器的实例代码
2017/05/23 Javascript
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
2017/10/16 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
跟老齐学Python之Python文档
2014/10/10 Python
详解Python 正则表达式模块
2018/11/05 Python
python版DDOS攻击脚本
2019/06/12 Python
Python 的AES加密与解密实现
2019/07/09 Python
Python将视频或者动态图gif逐帧保存为图片的方法
2019/09/10 Python
pytest中文文档之编写断言
2019/09/12 Python
python实现飞船大战
2020/04/24 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
利用html5的websocket实现websocket聊天室
2013/12/12 HTML / CSS
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
美国名牌香水折扣网站:Hottperfume
2021/02/10 全球购物
ddl,dml和dcl的含义
2016/05/08 面试题
《藤野先生》教学反思
2014/02/19 职场文书
个人务虚会发言材料
2014/10/20 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
个人德育工作总结
2015/03/05 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python
golang生成vcf通讯录格式文件详情
2022/03/25 Golang
MySQL常用慢查询分析工具详解
2022/08/14 MySQL