如何把这个canvas特效蓝色背景改成透明背景?

发布于 2022-09-12 00:55:01 字数 1799 浏览 41 评论 0

image.png
我想要背景色自定义

<!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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清醇 2022-09-19 00:55:01

去除 fillStylefillRect 设置,并在每次 draw() 绘制时先清除上次绘制的线条 clearRect(0,0,w,h)
代码如下,背景为透明而非白色,顺便,那背景不是紫色吗???

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <style>
        body {
            width: 100%;
            margin: 0;
            overflow: hidden;
        }
    </style>

</head>

<body>
<canvas id="canv" width="1680" height="825"></canvas>
<script>
    let c = document.getElementById('canv');
    let $ = c.getContext('2d');
    let w = c.width = window.innerWidth;
    let h = c.height = window.innerHeight;

    let draw = function (a, b, t) {
        $.clearRect(0,0,w,h);
        $.lineWidth = 0.8;
        for (let i = -30; i < 30; i += 1) {
            $.strokeStyle = 'rgba(142,0,255,0.15)';
            $.beginPath();
            $.moveTo(0, h / 2);
            for (let 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();
        }
    };
    let t = 0;

    window.addEventListener('resize', function () {
        c.width = w = window.innerWidth;
        c.height = h = window.innerHeight;
    }, false);

    let run = function () {
        window.requestAnimationFrame(run);
        t += 0.2;
        draw(33, 52 * Math.sin(t / 2400), t);
    };
    run();
</script>


</body>
</html>
夏末染殇 2022-09-19 00:55:01

这个效果,屏幕最左边丝带上下活动范围太小。如何变大?(比如屏幕最右边,丝带起伏就挺大。)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文