Я создал анимацию, которая должна перемещать элемент сверху вниз страницы. Я создал 4 объекта и применил к ним анимацию. К моему удивлению, они движутся с разной скоростью. Я немного запутался. Что происходит?
body {
background-color: rgb(12, 12, 13)
}
#container {
width: 100%;
height: 100%;
}
.object {
background-color: rgb(255, 255, 255);
width: 3px;
height: 3px;
}
.slider {
animation: 10s linear infinite slide;
}
@keyframes slide {
from {
margin-top: 0%
}
to {
margin-top: 100%;
}
}<body>
<div id = "container">
<div class = "object slider"></div>
<div class = "object slider" style = "margin-left:30%"></div>
<div class = "object slider" style = "margin-left:60%"></div>
<div class = "object slider" style = "margin-left:90%"></div>
</div>





Когда вы осматриваете «контейнер» и каждый «объект». Вы видите, что поля увеличиваются друг друга. Таким образом, первый имеет "нормальный" запас, второй - 2-кратный "нормальный" и так далее. Когда вы позиционируете «объект» абсолютным, этого больше не будет.
Ваши элементы являются блочными, поэтому они просто находятся друг над другом и каждый на новой строке. Мы не видим этого четко, потому что они очень маленькие, но если вы увеличите их размер, это будет тривиально:
body {
background-color: rgb(12, 12, 13)
}
#container {
width: 100%;
height: 100%;
}
.object {
background-color: rgb(255, 255, 255);
width: 30px;
height: 30px;
}
.slider {
/*animation: 10s linear infinite slide;*/
}
@keyframes slide {
from {
margin-top: 0%
}
to {
margin-top: 100%;
}
}<body>
<div id = "container">
<div class = "object slider"></div>
<div class = "object slider" style = "margin-left:30%"></div>
<div class = "object slider" style = "margin-left:60%"></div>
<div class = "object slider" style = "margin-left:90%"></div>
</div>Вы можете ясно видеть, что каждый из них находится на линии, и увеличение верхнего края первой строки подтолкнет другие строки и так далее.
Добавьте анимацию только к первой, и вы увидите, что происходит. Затем добавьте к остальным, и вы поймете:
body {
background-color: rgb(12, 12, 13)
}
#container {
width: 100%;
height: 100%;
}
.object {
background-color: rgb(255, 255, 255);
width: 30px;
height: 30px;
}
.slider {
animation: 10s linear infinite slide;
}
@keyframes slide {
from {
margin-top: 0%
}
to {
margin-top: 100%;
}
}<body>
<div id = "container">
<div class = "object slider"></div>
<div class = "object " style = "margin-left:30%"></div>
<div class = "object " style = "margin-left:60%"></div>
<div class = "object " style = "margin-left:90%"></div>
</div>
Я думаю, это как-то связано со встроенным полем и характером
blockdiv - jsfiddle.net/df4xjnc7/3