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 相关文章推荐
表单提交验证类
Jul 14 Javascript
Google Map API更新实现用户自定义标注坐标
Jul 29 Javascript
jQuery 源码分析笔记(2) 变量列表
May 28 Javascript
jQuery中常用的遍历函数用法实例总结
Sep 01 Javascript
js获取url传值的方法
Dec 18 Javascript
JavaScript实现DOM对象选择器
Sep 24 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
Oct 24 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
Mar 12 Javascript
200行HTML+JavaScript实现年会抽奖程序
Jan 22 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
Feb 13 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
Sep 17 Javascript
VUE-ElementUI 自定义Loading图操作
Nov 11 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实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
javascript 特殊字符串
2009/02/25 Javascript
Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
2011/03/12 Javascript
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
extjs 如何给column 加上提示
2014/07/29 Javascript
DOM节点删除函数removeChild()用法实例
2015/01/12 Javascript
js查找节点的方法小结
2015/01/13 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
js格式化输入框内金额、银行卡号
2016/02/01 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
JS深度拷贝Object Array实例分析
2016/03/31 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
VUE 实现复制内容到剪贴板的两种方法
2019/04/24 Javascript
详解js创建对象的几种方式和对象方法
2021/03/01 Javascript
python安装教程 Pycharm安装详细教程
2017/05/02 Python
python中in在list和dict中查找效率的对比分析
2018/05/04 Python
对Python3之方法的覆盖与super函数详解
2019/06/26 Python
python将类似json的数据存储到MySQL中的实例
2019/07/12 Python
由面试题加深对Django的认识理解
2019/07/19 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
Python中Unittest框架的具体使用
2019/08/27 Python
Python接口测试get请求过程详解
2020/02/28 Python
Python+PyQt5+MySQL实现天气管理系统
2020/06/16 Python
毕业生教师求职信
2013/10/20 职场文书
会走路的树教学反思
2014/02/20 职场文书
学校火灾防控方案
2014/06/09 职场文书
建设工程授权委托书
2014/09/22 职场文书
2015年妇幼卫生工作总结
2015/05/23 职场文书
2016中秋节晚会开场白
2015/11/26 职场文书
检讨书格式
2019/04/25 职场文书
用Python爬取某乎手机APP数据
2021/06/15 Python
springboot读取nacos配置文件
2022/05/20 Java/Android