Каким образом следует управлять многострочной анимацией контейнера (например, блоком контента или предупреждением) анимации?Многострочная анимация разворачивания контейнера
http://plnkr.co/edit/Qq5fzeb3GBengviVNimC?p=preview
.alert {
background: turquoise;
color: white;
padding: 10px;
overflow: hidden;
opacity: 0;
max-height: 0;
}
body:hover .alert {
display: block !important;
opacity: 1;
-webkit-transition: 2s;
-moz-transition: 2s;
-ms-transition: 2s;
transition: 2s;
max-height: 100px;
}
Проблема здесь «многострочный», как вы можете видеть, высота блока не является фиксированной величиной.
<div class="alert">Alert!<br>Alert!<br>Alert!</div>
Хотя max-height: 100px
близко реальной высоты блока, он отлично работает. Если max-height
меньше, анимация в конце концов будет неровной, а max-height: 9999px
сделает переход слишком быстрым.
Можно ли это сделать без расчета точной высоты в JS?
Насколько я знаю, высота CSS не может быть плавно перешедших без фиксированные размеры. См. Http://stackoverflow.com/questions/6089548/css3-height-transition-not-working для обсуждения. Вам не нужно указывать высоту заблаговременно в CSS, если вы используете JS, как показывает эта ссылка, или как TijnvW продемонстрировал в своем ответе. – Palpatim