如何把这个canvas特效蓝色背景改成透明背景?
我想要背景色自定义
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style>
body {
width: 100%;
margin: 0;
overflow: hidden;
background: hsla(277, 95%, 50%, 1);
}
</style>
</head>
<body>
<canvas id="canv" width="1680" height="825"></canvas>
<script>
var c = document.getElementById('canv');
var $ = c.getContext('2d');
var w = c.width = window.innerWidth;
var h = c.height = window.innerHeight;
var draw = function (a, b, t) {
$.lineWidth = 0.8;
$.fillStyle = 'hsla(277, 95%, 55%, 1)';
$.fillRect(0, 0, w, h);
for (var i = -30; i < 30; i += 1) {
$.strokeStyle = 'hsla(277, 95%, 15%, .15)';
$.beginPath();
$.moveTo(0, h / 2);
for (var j = 0; j < w; j += 10) {
$.lineTo(10 * Math.sin(i / 10) +
j + 0.008 * j * j,
Math.floor(h / 2 + j / 2 *
Math.sin(j / 50 - t / 50 - i / 118) +
(i * 0.9) * Math.sin(j / 25 - (i + t) / 65)));
}
;
$.stroke();
}
}
var t = 0;
window.addEventListener('resize', function () {
c.width = w = window.innerWidth;
c.height = h = window.innerHeight;
$.fillStyle = 'hsla(277, 95%, 55%, 1)';
}, false);
var run = function () {
window.requestAnimationFrame(run);
t += 0.2;
draw(33, 52 * Math.sin(t / 2400), t);
};
run();
</script>
</body>
</html>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
去除
fillStyle
和fillRect
设置,并在每次draw()
绘制时先清除上次绘制的线条clearRect(0,0,w,h)
。代码如下,背景为透明而非白色,顺便,那背景不是紫色吗???
这个效果,屏幕最左边丝带上下活动范围太小。如何变大?(比如屏幕最右边,丝带起伏就挺大。)