gpt4 book ai didi

html - 有没有更有效的方法来制作多步动画?

转载 作者:行者123 更新时间:2023-11-28 14:55:36 25 4
gpt4 key购买 nike

我试图使转换与我在下面的代码示例中所做的非常相似。它在这里工作得很好,但是当我在真实站点上使用它时,它几乎从不工作。一些过渡延迟似乎被跳过,并且不像这个简化的示例那样平滑。在网站上,我试图将其作为幻灯片过渡的一部分,以便同时发生其他过渡,所以我认为 GPU 无法处理我设置的方式。有没有另一种方法可以做到这一点,这样我就不会分别转换每个 div?我可以让一个过渡在前一个过渡开始之前不开始吗?可能带有关键帧或步骤?

function toggleActive(){
var element = document.getElementById('wrap');
element.classList.toggle('active');
}
#wrap{
position:relative;
overflow:hidden;
}
#wrap img{
max-width:100%;
}
.diagonal-transition{
background-color:#edf8fb;
position: absolute;
height: 201%;
width:25%;
transform: rotate(45deg);
top: -200%;
opacity:.7;
transition-duration: .5s;
}
.diag-box-1{
left:67%;
}
.diag-box-2{
left:102.4%;
transition-delay: .5s;
}
.diag-box-3{
left:137.8%;
transition-delay: 1s;
}
.diag-box-4{
left:173.2%;
transition-delay: 1.5s;
}
.diag-box-5{
left:208.7%;
transition-delay: 2s;
}
.active .diag-box-1, .active .diag-box-2, .active .diag-box-3, .active .diag-box-4, .active .diag-box-5{
transform: rotate(45deg) translatey(100%);
}
<div id="wrap">
<img src="https://s8.postimg.cc/3q4ybyfad/parrot.jpg">
<div class="diagonal-transition diag-box-1"></div>
<div class="diagonal-transition diag-box-2"></div>
<div class="diagonal-transition diag-box-3"></div>
<div class="diagonal-transition diag-box-4"></div>
<div class="diagonal-transition diag-box-5"></div>
</div>
<button onclick="toggleActive()">ACTIVE STATE</button>

最佳答案

如果只考虑背景和一个动画,我会采取不同的做法。然后你可以调整background-size/background-position来控制动画的行为:

function toggleActive() {
var element = document.getElementById('wrap');
element.classList.toggle('active');
}
#wrap {
position: relative;
overflow: hidden;
width: 500px;
height: 300px;
background-image:
linear-gradient(120deg,transparent 0% ,rgba(237, 248, 251, 0.7) 0%,rgba(237, 248, 251, 0.7) 20%,transparent 20.5%),
linear-gradient(120deg,transparent 21%,rgba(237, 248, 251, 0.7) 20%, rgba(237, 248, 251, 0.7) 40%,transparent 40.5%),
linear-gradient(120deg,transparent 41%,rgba(237, 248, 251, 0.7) 40%, rgba(237, 248, 251, 0.7) 60%,transparent 60.5%),
linear-gradient(120deg,transparent 61%,rgba(237, 248, 251, 0.7) 60%, rgba(237, 248, 251, 0.7) 80%,transparent 80.5%),
linear-gradient(120deg,transparent 81%,rgba(237, 248, 251, 0.7) 80%, rgba(237, 248, 251, 0.7) 100%,transparent 100%),
url(https://s8.postimg.cc/3q4ybyfad/parrot.jpg);
background-position:0 0,0 0,0 0,0 0,0 0,center;
background-size: 0 100%,0 100%,0 100%,0 100%,0 100%,cover;
background-repeat: no-repeat;
}
.active {
animation:change 1s linear forwards;
}
@keyframes change {
0% {
background-size: 100% 0,100% 0,100% 0,100% 0,100% 0,cover;
}
20% {
background-size: 100% 100%,100% 0,100% 0,100% 0,100% 0,cover;
}
40% {
background-size: 100% 100%,100% 100%,100% 0,100% 0,100% 0,cover;
}
60% {
background-size: 100% 100%,100% 100%,100% 100%,100% 0,100% 0,cover;
}
80% {
background-size: 100% 100%,100% 100%,100% 100%,100% 100%,100% 0,cover;
}
100% {
background-size: 100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,cover;
}
}
<div id="wrap">
</div>
<button onclick="toggleActive()">ACTIVE STATE</button>

关于html - 有没有更有效的方法来制作多步动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50996921/

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