js实现螺旋纹理特效
2024-10-22 12:29:06
效果如下
实现代码如下:
<!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>
本博客转载于:
因为我试了,觉得听炫酷的,才写到这的!
最新文章
- python安装numpy、scipy和matplotlib等whl包的方法
- Unity Standard Assets 简介之 Cameras
- IE9控件安装方法
- leetcode sort List
- fiddler 拦截小结
- struts1 Demo
- 工作随笔——xshell4安装后应该做的一些事
- thrift
- C#程序读取数据库中包含null的列的值
- html rowspan colspan代码示例
- hbase操作的问题
- [HTML Q&;A][转]使pre的内容自动换行
- PERCONA-TOOLKIT 工具的安装与使用1
- tableView创建方法调用的研究
- 2015 ACM/ICPC Asia Regional Shenyang Online
- DDE复盘流程
- 201521123081《Java程序设计》 第8周学习总结
- idea上使用maven入门(二)——本地仓库以及使用maven
- jspdf简单使用
- vs2008快捷键一览表
热门文章
- if __name__ == &#39;__main__&#39;是什么意思?如何理解?看到一个很有用的解答
- python基础02—运算符与流程控制
- 编写高质量代码:Web前端开发修炼之道(一)
- C++_异常4-将对象用作异常类型
- C#.net地址传参汉字乱码解决方案
- Codeforces - 600E 树上启发式合并
- dapper源码(.net 4.0)
- Hibernate 4 Second Level Caching With EHCache
- ssh,hibernate动态映射多表
- Spring Annotation(注解)