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 图片延迟加载并等比缩放插件
Nov 09 Javascript
JavaScript中__proto__与prototype的关系深入理解
Dec 04 Javascript
javascript定时变换图片实例代码
Mar 17 Javascript
JavaScript自动设置IFrame高度的小例子
Jun 08 Javascript
Jquery自定义button按钮的几种方法
Jun 11 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
Mar 01 Javascript
BootStrap Tooltip插件源码解析
Dec 27 Javascript
详解vue-cli官方脚手架配置
Jul 20 Javascript
vue完成项目后,打包成静态文件的方法
Sep 03 Javascript
vue绑定事件后获取绑定事件中的this方法
Sep 15 Javascript
利用原生JS实现欢乐水果机小游戏
Apr 23 Javascript
Vue监视数据的原理详解
Feb 24 Vue.js
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记录用户通过搜索引擎进网站的关键词
2014/02/13 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
2017/03/14 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
JavaScript实现彩虹文字效果的方法
2015/04/16 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
Bootstrap中CSS的使用方法
2016/02/17 Javascript
JS编写函数实现对身份证号码最后一位的验证功能
2016/12/29 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
react native实现往服务器上传网络图片的实例
2017/08/07 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
2017/12/07 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
nodejs实现的简单web服务器功能示例
2018/03/15 NodeJs
angularjs 动态从后台获取下拉框的值方法
2018/08/13 Javascript
Vue组件通信的几种实现方法
2019/04/25 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
2019/09/03 jQuery
返回上一个url并刷新界面的js代码
2020/09/12 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
[59:00]OG vs TNC 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python网络爬虫采集联想词示例
2014/02/11 Python
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
Python 由字符串函数名得到对应的函数(实例讲解)
2017/08/10 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
2019/07/11 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
使用css3制作动感导航条示例
2014/01/26 HTML / CSS
Expedia加拿大官方网站:加拿大最大的在线旅游提供商
2017/12/31 全球购物
司机岗位职责说明书
2014/07/29 职场文书
管理岗位竞聘演讲稿
2014/08/18 职场文书
党风廉政建设调研报告
2015/01/01 职场文书
2015社区爱国卫生工作总结
2015/04/21 职场文书
小学运动会加油稿
2015/07/22 职场文书
青年联谊会致辞
2015/07/31 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书