Причина в том, что встроенный fadeInDown
также использует transform
для своей анимации, следовательно, сбрасывает / переопределяет ваше начальное значение и восстанавливает его после, если вы не используете animation-fill-mode: forwards;
, что сохранит его на 50%левый край все время.
И обратите внимание, предустановка transform
«значений», таких как translateX
, не сохраняется, когда к «свойству» добавляется другое «значение», всесуществующие значения перезаписываются.
Оригинальный CSS
@keyframes fadeInDown {
from {
opacity: 0;
-webkit-transform: translate3d(0, -100%, 0);
transform: translate3d(0, -100%, 0);
}
to {
opacity: 1;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
Чтобы ваша работа работала, вам необходимо переопределить встроенную, добавив к ней значение translateX
ибудет вести себя.
И если вы это сделаете, есть также префиксное правило @keyframes
, которое также необходимо обновить.
Новый CSS
@keyframes fadeInDown {
from {
opacity: 0;
-webkit-transform: translate3d(-50%, -100%, 0);
transform: translate3d(-50%, -100%, 0);
}
to {
opacity: 1;
-webkit-transform: translate3d(-50%, 0, 0);
transform: translate3d(-50%, 0, 0);
}
}
В качестве примечания:
С предоставленной настройкой он всегда будет занимать всю ширину и центрирование не будет иметь никакого эффекта, если вы не дадите ему max-width
где-то еще.