首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用JavaScript制作背景动画波?

如何用JavaScript制作背景动画波?
EN

Stack Overflow用户
提问于 2022-04-09 02:45:30
回答 1查看 525关注 0票数 -1

我想做一个背景动画浪潮,像这个网站英雄部分。https://raze.network/

有人能帮我制作这个动画背景波吗?

谢谢您:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-09 04:24:33

有一个很好的代码示例,您可以使用它来获得一个关于如何使用JavaScript动画这一波的一般想法。作者允许对CodePen发表评论,这样我就能与他取得联系。

代码语言:javascript
复制
let noise = new SimplexNoise();

function draw(e) {
    let xCount = 35;
    let yCount = 80;
    let iXCount = 1 / (xCount - 1);
    let iYCount = 1 / (yCount - 1);
    let time = e * 0.001;
    let timeStep = 0.01;
    let grad = ctx.createLinearGradient(-width, 0, width, height);
    let t = time % 1;
    let tSide = floor(time % 2) === 0;
    let hueA = tSide ? 340 : 210;
    let hueB = !tSide ? 340 : 210;
    let colorA = hsl(hueA, 100, 50);
    let colorB = hsl(hueB, 100, 50);
    grad.addColorStop(map(t, 0, 1, THIRD, ZERO), colorA);
    grad.addColorStop(map(t, 0, 1, TWO_THIRDS, THIRD), colorB);
    grad.addColorStop(map(t, 0, 1, ONE, TWO_THIRDS), colorA);
    ctx.globalAlpha = map(cos(time), -1, 1, 0.15, 0.3);
    background(grad);
    ctx.globalAlpha = 1;
    beginPath();
    for(let j = 0; j < yCount; j++) {
        let tj = j * iYCount;
        let c = cos(tj * TAU + time) * 0.1;
        for(let i = 0; i < xCount; i++) {
            let t = i * iXCount;
            let n = noise.noise3D(t, time, c);
            let y = n * height_half;
            let x = t * (width + 20) - width_half - 10;
            (i ? lineTo : moveTo)(x, y);
        }
        time += timeStep;
    }
    compositeOperation(compOper.lighter);
    ctx.filter = 'blur(10px)';
    stroke(grad, 5);
    ctx.filter = 'blur(5px)';
    stroke(hsl(0, 0, 100, 0.8), 2);
}

https://codepen.io/Alca/pen/gzxXLq

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71804891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档