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 相关文章推荐
DOM Scripting中的图片切换[兼容Firefox]
Jun 12 Javascript
什么是cookie?js手动创建和存储cookie
May 27 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
May 10 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
Oct 11 Javascript
React中this丢失的四种解决方法
Mar 12 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
Mar 25 Javascript
探索JavaScript中私有成员的相关知识
Jun 13 Javascript
js实现固定区域内的不重叠随机圆
Oct 24 Javascript
js get和post请求实现代码解析
Feb 06 Javascript
jQuery实现简单QQ聊天框
Aug 27 jQuery
Map与WeakMap类型在JavaScript中的使用详解
Nov 18 Javascript
Vue+Bootstrap实现简易学生管理系统
Feb 09 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代码优化的53个细节
2014/03/03 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
2014/06/12 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
JS option location 页面跳转实现代码
2008/12/27 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
2014/12/14 Javascript
Javascript Object 对象学习笔记
2014/12/17 Javascript
js查看一个函数的执行时间实例代码
2015/09/12 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
Bootstrap基本组件学习笔记之分页(12)
2016/12/08 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
2018/07/21 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
在vue中多次调用同一个定义全局变量的实例
2018/09/25 Javascript
JS数组实现分类统计实例代码
2018/09/30 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
mpvue微信小程序开发之实现一个弹幕评论
2019/11/24 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
Pytorch中accuracy和loss的计算知识点总结
2019/09/10 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
Python爬虫破解登陆哔哩哔哩的方法
2020/11/17 Python
css3.0新属性效果在ie下的解决方案
2010/05/10 HTML / CSS
世界上最大的乐谱选择:Sheet Music Plus
2020/01/18 全球购物
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
Shell如何接收变量输入
2012/09/24 面试题
岳父生日宴会答谢词
2014/01/13 职场文书
文秘人员工作职责
2014/01/31 职场文书
细节决定成败演讲稿
2014/05/12 职场文书
生日庆典策划方案
2014/06/02 职场文书
会计专业求职信
2014/08/10 职场文书
工程部文员岗位职责
2015/02/04 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
结婚幸福感言
2015/08/01 职场文书