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 字符串连接[性能比较]
May 10 Javascript
初学js插入节点appendChild insertBefore使用方法
Jul 04 Javascript
JavaScript模拟实现键盘打字效果
Jun 29 Javascript
javascript带回调函数的异步脚本载入方法实例分析
Jul 02 Javascript
Bootstrap Navbar Component实现响应式导航
Oct 08 Javascript
jQuery自定义组件(导入组件)
Nov 08 Javascript
微信小程序 设置启动页面的两种方法
Mar 09 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
Jul 12 Javascript
js 获取html5的data属性实现方法
Jul 28 Javascript
基于element-ui组件手动实现单选和上传功能
Dec 06 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
Oct 08 Javascript
基于vue.js实现购物车
Jan 15 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
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
2019/08/02 PHP
使用Mootools动态添加Css样式表代码,兼容各浏览器
2011/12/12 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
jquery实现兼容浏览器的图片上传本地预览功能
2013/10/14 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
2013/11/10 Javascript
jquery不常用方法汇总
2015/07/26 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
JavaScript对象创建模式实例汇总
2016/10/03 Javascript
bootstrap输入框组件使用方法详解
2017/01/19 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
python list 合并连接字符串的方法
2013/03/09 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
解决pyinstaller打包pyqt5的问题
2019/01/08 Python
python 画二维、三维点之间的线段实现方法
2019/07/07 Python
Python实现微信好友的数据分析
2019/12/16 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
2020/06/23 Python
python中pop()函数的语法与实例
2020/12/01 Python
de Bijenkorf比利时官网:荷兰最知名的百货商店
2017/06/29 全球购物
自荐信包含哪些内容
2013/10/30 职场文书
单身联谊活动方案
2014/01/29 职场文书
工程承诺书怎么写
2014/05/24 职场文书
党性观念心得体会
2014/09/03 职场文书
学年个人总结范文
2015/03/05 职场文书
超搞笑婚前保证书
2015/05/08 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
入团申请书格式
2019/06/20 职场文书
小学三年级作文之写景
2019/11/05 职场文书
Android 界面一键变灰 深色主题工具类
2022/04/28 Java/Android
Python 第三方库 openpyxl 的安装过程
2022/12/24 Python