«Эффект подпрыгивания» с кубическим безье (или аналогичным), когда нет явной высоты элемента.CSS

Разбираемся в CSS
Ответить
Anonymous
 «Эффект подпрыгивания» с кубическим безье (или аналогичным), когда нет явной высоты элемента.

Сообщение Anonymous »

Я хочу, чтобы элемент HTML расширялся вниз, и в конце я хотел бы, чтобы он немного подпрыгивал, что-то вроде функции кубического Безье.
Поэтому я установил переход: высота ... в CSS, чтобы анимировать изменения свойства высоты элемента. Однако это работает только тогда, когда у меня явно задана высота, а не 100vh, чтобы просто содержать все элементы.
Чтобы лучше представить это, вот пример: когда зеленый контейнер имеет max-height меньше его фактической высоты (чтобы содержать дочерние элементы), тогда эффект виден и работает. Но тогда я не полагаюсь на автоматическое изменение размера контейнера в соответствии с его дочерними элементами.
Когда я указываю что-то «достаточно большое», чтобы вместить всех возможных дочерних элементов, тогда, конечно, «эффект отскока» " не работает, так как он "подпрыгивает" при достижении "достаточно большой" высоты, в результате чего эффект не виден.
Проблему можно наблюдать, указав другую высоту в фрагменте ниже (3rem или ниже - работает, 4 rem или выше - не работает).

Код: Выделить всё

function expand(){
let dropdown = document.getElementById('dropdown')
let height = dropdown.offsetHeight
let maxHeightInput = document.getElementById('maxHeightInput')
let maxHeight = maxHeightInput?.value ?? 0
dropdown.style.maxHeight = height > 0 ? 0 : maxHeight
}

Код: Выделить всё

#dropdown {
background: lightgreen;
max-height: 3rem;
transition: max-height 0.4s cubic-bezier(.04,1.59,.83,1.18);
& > ul {
border: 1px solid black;
}
}

Код: Выделить всё

Green container expanded max height 

List of items is ~3rems tall.
Expand / collapse

[list]
Item 1
Item 2
Item 3
[/list]


Вопрос в том, как заставить этот эффект подпрыгивания работать в моем сценарии: когда У меня есть контейнер с дочерними элементами, и размер контейнера изменяется динамически в зависимости от его дочерних элементов.

Подробнее здесь: https://stackoverflow.com/questions/793 ... licit-heig
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «CSS»