Введение
В этом практическом занятии мы изучим, как гладко менять высоту элемента от 0 до auto, когда высота неизвестна. Эта техника полезна для создания выпадающих меню, аккордеонов и других анимированных элементов. Используя свойства CSS transition, max-height и overflow, а также JavaScript для динамического установки значения высоты, мы можем создать бесперебойный и визуально привлекательный пользовательский опыт.
Переход высоты
В ВМ уже предоставлены index.html и style.css.
Этот фрагмент кода осуществляет переход высоты элемента от 0 до auto, когда высота неизвестна, выполняя следующие шаги:
- Используйте свойство
transition, чтобы указать, что измененияmax-heightдолжны осуществляться в течение0,3 с. - Используйте свойство
overflow, установив его в значениеhidden, чтобы предотвратить выход содержимого скрытого элемента за пределы его контейнера. - Используйте свойство
max-height, чтобы указать начальную высоту0. - Используйте псевдо-класс
:hover, чтобы изменитьmax-heightна значение переменной--max-height, установленной с помощью JavaScript. - Используйте свойство
Element.scrollHeightи методCSSStyleDeclaration.setProperty(), чтобы установить значение--max-heightравным текущей высоте элемента. - Примечание: этот подход вызывает переполнение на каждом кадре анимации, что может привести к лагам, когда есть большое количество элементов ниже элемента, который меняется.
<div class="trigger">
Наведите курсор на меня, чтобы увидеть переход высоты.
<div class="el">Дополнительное содержимое</div>
</div>
.el {
transition: max-height 0.3s;
overflow: hidden;
max-height: 0;
}
.trigger:hover > .el {
max-height: var(--max-height);
}
let el = document.querySelector(".el");
let height = el.scrollHeight;
el.style.setProperty("--max-height", height + "px");
Пожалуйста, нажмите кнопку 'Go Live' в нижнем правом углу, чтобы запустить веб-сервис на порту 8080. Затем можно обновить вкладку Web 8080, чтобы просмотреть веб-страницу.
Резюме
Поздравляем! Вы завершили практическое занятие по переходу высоты. Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.