У меня есть вертикальный стек элементов, к которому пользователь может добавить один, нажав кнопку, примерно так.
<ol>
<li><textarea></textarea></li>
<li><textarea></textarea></li>
</ol>
<a data-action="additem">Add another</a>
Я пытаюсь написать анимацию CSS, чтобы при вставке нового li
"Добавить другой" плавно переместился в новое место отдыха. Фиксированная высота тегов li
не является опцией, и я стараюсь избегать использования анимации max-height
, поскольку она может иметь странные эффекты макета.
Я понял, что я мог бы анимировать margin-bottom
от чего-то до 0 и иметь желаемый эффект, но я не могу понять, как в CSS выражать то, что мне нужна текущая высота элемента, к которому применяется это правило, Проценты измеряются относительно ширины элемента, и это не то, что мне нужно здесь, и я не могу придумать умный трюк, используя calc
или тому подобное, чтобы выразить то, что я хочу в браузере.
Предложения?
ИЗМЕНИТЬ
Я использую шаблон с повторной привязкой для добавления элементов в список. JS только подталкивает другой объект в наблюдаемый массив, а структура обрабатывает фактическую вставку DOM. Тег li
имеет на нем следующий CSS, чтобы заставить его войти гладко:
animation: append forwards .5s;
И append
определяется как:
@keyframes append {
from {
transform: translateX(10%);
opacity: 0;
margin-bottom: _____;
}
to {
transform: none;
opacity: 1;
margin-bottom: 0;
}
}