Посмотрите на CSS свойство position , вам нужно относительное положение и абсолютное положение.
Затем animation-fill-mode
forwards Цель сохранит вычисленные значения, установленные последним ключевым кадром, обнаруженным во время выполнения.Последний ключевой кадр зависит от значения animation-direction и animation-iteration-count:
@keyframes slideInFromLeft {
to{ width: 50%; }
}
.progress {
width:200px;
height:50px;
border:1px solid black;
position:relative;
}
.child {
position:absolute;
left:0;
top:0;
background:black;
width: 0%;
height: 100%;
overflow:hidden;
animation: slideInFromLeft 1s ease forwards;
}
<div class="progress">
<div class="child">x</div>
</div>
Теперь, если вы хотите анимировать его с помощью translate, вы должны добавить переполнение: скрыто в родительский элемент
@keyframes slideInFromLeft {
from {
transform: translateX(-100%);
}
}
.progress {
width:200px;
height:50px;
border:1px solid black;
position:relative;
overflow:hidden
}
.child {
background:black;
width: 50%;
height: 100%;
transform: translateX(0%);
animation: slideInFromLeft 1s ease;
}
<div class="progress">
<div class="child">x</div>
</div>