gpt4 book ai didi

javascript - 如何改善 mask 图像页面过渡?

转载 作者:行者123 更新时间:2023-12-05 06:14:29 25 4
gpt4 key购买 nike

我正在尝试实现与本网站相同的页面过渡效果http://56k.studiovoila.com/

所以经过几次搜索,我找到了这个教程https://tympanus.net/Tutorials/CSSMaskTransition/ ,我使用了他们在演示 1 中使用的 PNG,并使用适当的代码将其添加到我的元素中。

您可以在此处查看我的代码示例。 (效果比较模糊但是可以猜到效果)

const btnClick = document.getElementById("btn-click");
const body = document.querySelector("body");

btnClick.addEventListener("click",(e)=>{
e.preventDefault();
body.classList.remove("reveal");
body.classList.add("disapear");
});

body.addEventListener("animationend",()=>{
body.classList.remove("disapear");
body.classList.add("reveal");
});
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}

body {
position: static;
height: 100vh;
width: 100vw;
-webkit-mask-image: url("https://i.ibb.co/G5TXwKc/sprite.png");
mask-image: url("https://i.ibb.co/G5TXwKc/sprite.png");
-webkit-mask-size: 7100% 100%;
mask-size: 7100% 100%;
background: yellow;
}

body.disapear {
animation: mask-play-disapear 2s steps(70) forwards;
}
body.reveal {
animation: mask-play-reveal 1.4s steps(70) forwards;
}

@keyframes mask-play-disapear {
from {
mask-position: 0 0;
-webkit-mask-position: 0 0;
}
to {
mask-position: 100% 0;
-webkit-mask-position: 100% 0;
}
}
@keyframes mask-play-reveal {
0% {
mask-position: 100% 0;
-webkit-mask-position: 100% 0;
}
100% {
mask-position: 0 0;
-webkit-mask-position: 0 0;
}


}

#div1 {
position: relative;
height: 100%;
width: 100%;
display: flex;
justify-content: center;
align-items: center;
background: lightblue;
}
<body>
<div id="div1">
<a href="#" id="btn-click">click me</a>
</div>
</body>

问题:

1. 当用户看到使用 firefox 的转换但仅来自 Mac 计算机(Catalina 10.15.5)时,这似乎是错误。你可以在我创建的网站上看到这个错误 https://abiesco.ch

2. 因为它是PNG格式,我不能在动画过程中轻易改变形状,不是很灵活。我没有源文件(photoshop 或 after effect)。

我的问题:

是否可以使用 SVG 变形来获得相同的效果?我知道我们可以将 anime.js 与 tympanus tutorial 一起使用和 DesignCourse youtubeVideo .但我真的很想保留水 - 填充和离开屏幕的有机形状。

我已经试过了 bodymovin plugin对于允许将后效动画导出到 json 文件的后效 lottie.js可以动画。但该插件不支持湍流置换滤镜(用于水效果)。

最佳答案

好的,我找到了一种更好的动画页面转换方式。

我可以使用 WebGL。

我为我的案例找到了完美的例子 here但目前我的技能还不足以处理这个问题。

我做了一些 PIXI.JS带有着色器和滤镜的教程,您可以做的事情令人惊奇,但该死的很难。

等我的技能足够好时,我一定会深入研究 webgl。

关于javascript - 如何改善 mask 图像页面过渡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62876579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com