效果如下
 
 
  
 
实现代码如下:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>线性渐变动画</title>
<style>
body{
width:100%;
overflow:hidden;
margin:0;
background: hsla(0,0%,0%,1);
}
</style>
</head>
<body>
<canvas id="canvas"></canvas>
<script>
var c = document.getElementById('canvas'),
$ = c.getContext('2d'),
w = c.width = window.innerWidth, //设置 Canvas 宽度(全屏)
h = c.height = window.innerHeight, //设置 Canvas 高度(全屏)
t = 0, num = 450, //num = 450 绘制数量
u = 0, _u, //线性渐变的颜色值
s, a, b,
x, y, _x, _y,
_t = 1 / 100;
//控制摆动速度
var anim = function() {
$.globalCompositeOperation = 'source-over'; //默认,在目标图像上显示源图像
$.fillStyle = 'hsla(0, 0%, 0%, .75)'; //填充颜色
$.fillRect(0, 0, w, h); //绘制“已填色”的矩形
$.globalCompositeOperation = 'lighter'; //显示源图像 + 目标图像
for (var i = 0; i < 2; i++) {
x = 0; _u = (u / 4)+i;
$.beginPath();
//循环绘制个数(num),正玄 Math.sin(弧度),余弦 Math.cos(弧度)
for (var j = 0; j < num; j++) {
x -= .72 * Math.sin(4);
y = x * Math.sin(i + 3.0 * t + x / 20) / 2;
_x = x * Math.cos(b) - y * Math.sin(b);
_y = x * Math.sin(b) + y * Math.cos(b);
b = (j * 3) * Math.PI / 6.8;
$.lineWidth = .18; //线条宽度
$.arc(w / 2 - _x, h / 2 -_y, .5, 0, 2 * Math.PI); //画圆(半径0.5)
}
//设置线性渐变
var g = $.createLinearGradient(w / 2 + _x, h / 2 + _y, 0, w / 2 + _x, h / 2 + _y);
g.addColorStop(0.0, 'hsla('+ u +',85%,50%,1)');
g.addColorStop(0.5, 'hsla('+ _u +',85%,40%,1)');
g.addColorStop(1, 'hsla(0,0%,5%,1)');
$.strokeStyle = g; //线条颜色为 g(线性渐变)
$.stroke();
}
t += _t; //摆动速度会不断增加
u -= .2; //改变颜色值
window.requestAnimationFrame(anim); //绘制动画 anim
};
anim();
//监听,当浏览器宽度和高度改变时,改变 Canvas 的宽度和高度
window.addEventListener('resize', function() {
c.width = w = window.innerWidth;
c.height = h = window.innerHeight;
}, false);
</script>
</body>
</html>
 
 
本博客转载于:

因为我试了,觉得听炫酷的,才写到这的!

最新文章

  1. python安装numpy、scipy和matplotlib等whl包的方法
  2. Unity Standard Assets 简介之 Cameras
  3. IE9控件安装方法
  4. leetcode sort List
  5. fiddler 拦截小结
  6. struts1 Demo
  7. 工作随笔——xshell4安装后应该做的一些事
  8. thrift
  9. C#程序读取数据库中包含null的列的值
  10. html rowspan colspan代码示例
  11. hbase操作的问题
  12. [HTML Q&amp;A][转]使pre的内容自动换行
  13. PERCONA-TOOLKIT 工具的安装与使用1
  14. tableView创建方法调用的研究
  15. 2015 ACM/ICPC Asia Regional Shenyang Online
  16. DDE复盘流程
  17. 201521123081《Java程序设计》 第8周学习总结
  18. idea上使用maven入门(二)——本地仓库以及使用maven
  19. jspdf简单使用
  20. vs2008快捷键一览表

热门文章

  1. if __name__ == &#39;__main__&#39;是什么意思?如何理解?看到一个很有用的解答
  2. python基础02—运算符与流程控制
  3. 编写高质量代码:Web前端开发修炼之道(一)
  4. C++_异常4-将对象用作异常类型
  5. C#.net地址传参汉字乱码解决方案
  6. Codeforces - 600E 树上启发式合并
  7. dapper源码(.net 4.0)
  8. Hibernate 4 Second Level Caching With EHCache
  9. ssh,hibernate动态映射多表
  10. Spring Annotation(注解)