我在css中有一个动画,它应该让div看起来像是“浮动”或“悬停”,缓慢移动。但它看起来一点也不自然,它在角落里变慢了。什么样的细节会让它看起来更流畅?
片段
@keyframes floating {
0% {
transform: translate(0, 0);
}
25% {
transform: translate(10px, 0);
}
50% {
transform: translate(10px, 10px);
}
75% {
transform: translate(0, 10px);
}
100% {
transform: translate(0, 0);
}
}
.floating-div {
animation: floating 8s infinite;
}
<div class="floating-div" style="width:100px; height: 100px; border: 2px solid #000000; border-radius: 10px;">
Bzbz
</div>
3条答案
按热度按时间8fq7wneg1#
你可以使用animation timing function和linear值,这样动画在角上就不会变慢,并且保持一致。下面是更新后的代码。试试这个:-
通过每个循环的持续时间的动画进度也可以使用三次贝塞尔函数来调整。对于线性进度,三次贝塞尔函数的值将为0.0,0.0,1.0,1.0。下面是示例代码:-
xt0899hw2#
有梯度的小改进;)通过使用animation-timing-function,可以增强动画的流畅度我建议查看https://animista.net/play/background/bg-pan/bg-pan-right,有很多现成的动画
x6492ojm3#
要使div浮动或悬停的动画更平滑,可以调整CSS动画中的关键帧。目前,动画以固定的步长移动div,使其在角点处减速。下面是CSS动画的更新版本,它应该提供更平滑的浮动效果:
此外,还可以尝试使用animation-timing-function属性来更改动画的缓动。默认值为缓动,这会导致动画在开始和结束时减慢。可以尝试使用不同的值(例如线性、缓入、缓出或缓入出),以查看哪一个值可以产生所需的平滑度。例如:
通过进行这些调整,您应该能够为div实现更平滑,更自然的浮动或悬停效果。