如何消除溢出 css 动画中的抖动?
How to remove shaking from overflow css animation?
我目前正在开发一个 React 应用程序,它可以显示当时我正在听的音乐。显然有些歌名,专辑名等比其他的长,所以我想用动画来展示溢出的部分。我设法做到了这一点,还可以。较长的文本可以很好地滚动,但我的问题是它也会为较短的文本设置动画,这会导致它们在动画过程中有些晃动。
有什么办法可以消除抖动吗?基于 Javascript 的解决方案也很受欢迎,但这似乎是更短的解决方案。
div {
width: 100px;
border: 1px solid black;
}
div p {
overflow: hidden;
white-space: nowrap;
display: inline-block;
position: relative;
min-width: 100%;
animation: 5s linear 0s infinite alternate scrolltext;
}
@keyframes scrolltext {
0%,
25% {
transform: translateX(0%);
left: 0%;
}
75%,
100% {
transform: translateX(-100%);
left: 100%;
}
}
<div>
<p>This is a very long text and rolls nicely</p>
<p>And these</p>
<p>two shaking?!</p>
</div>
使用 margin-left 和 margin-right 而不是 left 和 right
div {
width: 100px;
border: 1px solid black;
}
div p {
overflow: hidden;
white-space: nowrap;
display: inline-block;
position: relative;
min-width: 100%;
animation: 5s linear 0s infinite alternate scrolltext;
}
@keyframes scrolltext {
0%,
25% {
transform: translateX(0%);
margin-left: 0%;
}
75%,
100% {
transform: translateX(-100%);
margin-left: 100%;
}
}
<div>
<p>This is a very long text and rolls nicely</p>
<p>And these</p>
<p>two shaking?!</p>
</div>
我目前正在开发一个 React 应用程序,它可以显示当时我正在听的音乐。显然有些歌名,专辑名等比其他的长,所以我想用动画来展示溢出的部分。我设法做到了这一点,还可以。较长的文本可以很好地滚动,但我的问题是它也会为较短的文本设置动画,这会导致它们在动画过程中有些晃动。
有什么办法可以消除抖动吗?基于 Javascript 的解决方案也很受欢迎,但这似乎是更短的解决方案。
div {
width: 100px;
border: 1px solid black;
}
div p {
overflow: hidden;
white-space: nowrap;
display: inline-block;
position: relative;
min-width: 100%;
animation: 5s linear 0s infinite alternate scrolltext;
}
@keyframes scrolltext {
0%,
25% {
transform: translateX(0%);
left: 0%;
}
75%,
100% {
transform: translateX(-100%);
left: 100%;
}
}
<div>
<p>This is a very long text and rolls nicely</p>
<p>And these</p>
<p>two shaking?!</p>
</div>
使用 margin-left 和 margin-right 而不是 left 和 right
div {
width: 100px;
border: 1px solid black;
}
div p {
overflow: hidden;
white-space: nowrap;
display: inline-block;
position: relative;
min-width: 100%;
animation: 5s linear 0s infinite alternate scrolltext;
}
@keyframes scrolltext {
0%,
25% {
transform: translateX(0%);
margin-left: 0%;
}
75%,
100% {
transform: translateX(-100%);
margin-left: 100%;
}
}
<div>
<p>This is a very long text and rolls nicely</p>
<p>And these</p>
<p>two shaking?!</p>
</div>