Следует учитывать тот факт, что процентное значение с translate
связано с размером элемента , а не с родительским размером , как top
/ left
, и для того, чтобыДля хорошей производительности вам также необходимо заменить width
на scale
, чтобы использовать только преобразование, и вы не будете инициировать изменения макета .
Вот примерное представление вашего кода с использованием толькопреобразование:
body {
background: #ffffff;
margin: 50px 10px;
position:relative;
}
.slider {
position: absolute;
left:0;
right:0;
height: 5px;
overflow-x: hidden;
background: rgba(74, 141, 248, 0.4);
}
.slider:before,
.slider:after {
content: "";
position: absolute;
background: #4a8df8;
height: 5px;
width:100%;
transform:scaleX(0);
animation: increase 2s infinite linear;
}
.slider:after {
animation-delay:1s;
}
@keyframes increase {
from {
transform:translateX(0%) scaleX(0);
transform-origin:left;
}
50% {
transform-origin:left;
}
60% {
transform:translateX(0%) scaleX(0.5);
transform-origin:right;
}
80% {
transform:translateX(20%) scaleX(0.3);
transform-origin:right;
}
100% {
transform:translateX(0%) scaleX(0);
transform-origin:right;
}
}
<div class="slider">
</div>