Я использую transition: height 500ms
, чтобы добавить анимацию к элементу, который открывается с помощью кнопки с height: 0
до height: 100px
и наоборот.
Поскольку содержимое элемента добавляется динамически, а я - нетзнаю, что это размер, который я хотел бы переключиться на height: fit-content
вместо.Таким образом, элемент всегда будет иметь правильный размер для отображения его содержимого.
К сожалению, это отключает анимацию.
Как получить анимацию вместе с элементом div, размер которого подходитего содержание?
Следующий фрагмент кода показывает поведение:
document.querySelector('button')
.addEventListener(
'click',
() => document.querySelectorAll('div')
.forEach(div => div.classList.toggle('closed')));
div {
background-color: lightblue;
border: 1px solid black;
overflow: hidden;
transition: height 500ms;
}
div.closed {
height: 0 !important;
}
div.div1 {
height: 100px;
}
div.div2 {
height: fit-content;
}
<button type="button">toggle</button>
<h1>'height: 100px' => 'height: 0'</h1>
<div class="div1">
some text<br />
even more text<br />
so much text
</div>
<br>
<h1>'height: fit-content' => 'height: 0'</h1>
<div class="div2">
some text<br />
even more text<br />
so much text
</div>