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 相关文章推荐
javascript实现div的显示和隐藏的小例子
Jun 25 Javascript
JS判断变量是否为空判断是否null
Jul 25 Javascript
jquery分隔Url的param方法(推荐)
May 25 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
Jul 12 Javascript
JQuery动态添加Select的Option元素实现方法
Aug 29 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
May 14 Javascript
vue项目中跳转到外部链接的实例讲解
Sep 20 Javascript
jquery实现动态添加附件功能
Oct 23 jQuery
详解bootstrap-fileinput文件上传控件的亲身实践
Mar 21 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
May 20 Javascript
微信小程序实现日期格式化和倒计时
Nov 01 Javascript
jQuery提示框插件SweetAlert用法分析
Aug 05 jQuery
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获取服务器信息的实现代码
2013/02/04 PHP
IIS 7.5 asp Session超时时间设置方法
2017/04/17 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
2017/10/17 PHP
PHP array_shift()用法实例分析
2019/01/07 PHP
jQuery 全选效果实现代码
2009/03/23 Javascript
jquery 选择器部分整理
2009/10/28 Javascript
jQuery :first选择器使用介绍
2013/08/09 Javascript
使用js修改客户端注册表的方法
2013/08/09 Javascript
AngularJS入门教程(二):AngularJS模板
2014/12/06 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
微信小程序 如何引入外部字体库iconfont的图标
2018/01/31 Javascript
vue中各种通信传值方式总结
2019/02/14 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
2020/03/07 Javascript
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
PyCharm代码整体缩进,反向缩进的方法
2018/06/25 Python
在python中pandas的series合并方法
2018/11/12 Python
浅谈python 读excel数值为浮点型的问题
2018/12/25 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
2019/03/18 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
Django静态资源部署404问题解决方案
2020/05/11 Python
在Python中字典按值排序的实现方法
2020/11/12 Python
一款纯css3实现的漂亮的404页面的实例教程
2014/11/27 HTML / CSS
中学生学习生活的自我评价
2013/10/26 职场文书
小学生读书感言
2014/02/12 职场文书
《悯农》教学反思
2014/04/28 职场文书
2014年国庆节广播稿
2014/09/19 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
幼儿园辞职书
2015/02/26 职场文书
患者身份识别制度
2015/08/06 职场文书
在 Golang 中实现 Cache::remember 方法详解
2021/03/30 Python
pycharm无法导入lxml的解决办法
2021/03/31 Python
Python 阶乘详解
2021/10/05 Python
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL