Проблема заключалась в том, что пролеты недостаточно перемещались. Ниже приведена фиксированная копия:
.marquee {
overflow: hidden;
white-space: nowrap;
position: relative;
width: 100%;
}
.marquee span {
display: inline-block;
padding-right: 103px;
animation: marquee 10s linear infinite;
}
@keyframes marquee {
from {
transform: translateX(100%);
}
to {
transform: translateX(-1000%);
}
}
<div class="marquee">
<span>Image 1</span>
<span>Image 2</span>
<span>Image 3</span>
<span>Image 4</span>
<span>Image 5</span>
<span>Image 6</span>
<span>Image 7</span>
<span>Image 8</span>
<span>Image 9</span>
<span>Image 10</span>
</div>
Также имейте в виду, что существует целый элемент marqee, хотя я не уверен, что он поддерживается.
Вот его пример используя элемент marqee:
.marquee {
overflow: hidden;
white-space: nowrap;
position: relative;
width: 100%;
}
.marquee span {
display: inline-block;
margin-right: 103px;
animation: marquee 5s linear infinite;
}
@keyframes marquee {
from {
transform: translateX(20%);
}
to {
transform: translateX(-100%);
}
}
<marquee>
<span>Image 1</span>
<span>Image 2</span>
<span>Image 3</span>
<span>Image 4</span>
<span>Image 5</span>
<span>Image 6</span>
<span>Image 7</span>
<span>Image 8</span>
<span>Image 9</span>
<span>Image 10</span>
</marquee>
EDIT: Чтобы решить новую проблему, просто измените значения анимации, добавьте еще один оператор CSS для body
, и измените анимацию с span
s на контейнер:
body {
overflow: hidden;
}
.marquee {
overflow: hidden;
white-space: nowrap;
position: absolute;
animation: marquee 10s linear infinite;
}
.marquee span {
display: inline-block;
padding-right: 103px;
}
@keyframes marquee {
from {
transform: translateX(75%);
}
to {
transform: translateX(-100%);
}
}
<div class="marquee">
<span>Image 1</span>
<span>Image 2</span>
<span>Image 3</span>
<span>Image 4</span>
<span>Image 5</span>
<span>Image 6</span>
<span>Image 7</span>
<span>Image 8</span>
<span>Image 9</span>
<span>Image 10</span>
</div>