Вы анимируете max-height
, что вызывает перекомпоновку макета, которая требует интенсивного использования графического процессора. См. https://csstriggers.com/ для свойств CSS, которые вызывают компоновку, рисование или составные вычисления. Наиболее эффективным способом было бы сделать это в JavaScript для вычисления границ заранее и использовать transform
вместе с requestAnimationFrame
для манипулирования измерениями. Но я должен признать, что это немного сложно. У Пола Льюиса есть много хороших материалов о технике FLIP: https://aerotwist.com/blog/flip-your-animations/
Вы получаете неопределенное поведение - необходимо проверить, что контейнер содержит что-то с помощью пустого () (который проверяет, пуст ли контейнер) прежде, чем назвать переднюю сторону ().
Вы получаете неопределенное поведение.
Получить использование проверки диапазона в (0). Если это перестало работать, Вы получаете a out_of_range
исключение.
Вы имеете, всегда должны быть уверены, что Ваш контейнер не пуст прежде, чем назвать переднюю сторону () на этом экземпляре. При назывании пустым (), поскольку безопасность хороша.
Конечно, в зависимости от Вашего дизайна программы, всегда имея непустой контейнер мог быть инвариантный оператор, разрешающий Вам предотвратить и сохранить вызов для освобождения () каждого раза, когда Вы называете переднюю сторону (). (или по крайней мере в некоторой части Вашего кода?)
Но как указано выше, если Вы хотите избежать undefinied поведения в своей программе, сделайте это сильным инвариантом.