У меня есть вопрос относительно того, как получить высоту div. Я в курсе .height()
и innerHeight()
, но никто из них не делает для меня работу в этом деле. Дело в том, что в этом случае у меня есть div с переполненной шириной и переполнением: scroll и div имеет фиксированную высоту.
Если я использую .height()
или innerHeight()
, оба они дают мне высоту видимой области, но если я хочу, чтобы переполнение было учтено, как мне поступить?
.scrollHeight
функция DOM не будет работать в IE <8,0 ( developer.mozilla.org/en/DOM/element.scrollHeight )scrollHeight
также иногда возвращает ноль, когда он скрыт (или его родитель скрыт), досадно.overflow: hidden
: /document.getElementById('your_div').scrollHeight
Для получения дополнительной информации о
.scrollHeight
собственности обратитесь к документации :источник
Другой возможностью было бы поместить html в не переполнение: скрытый элемент помещается «вне» экрана, как абсолютная позиция сверху и слева, меньше 5000 пикселей, затем считывается высота этих элементов. Это некрасиво, но хорошо работает.
источник
Я только что подготовил другое решение для этого, где больше нет необходимости использовать значение от -много до максимального-максимального значения. Для вычисления внутренней высоты свернутого DIV требуется несколько строк кода javascript, но после этого это все CSS.
1) Извлечение и установка высоты
Получить внутреннюю высоту свернутого элемента (используя
scrollHeight
). У моего элемента есть класс,.section__accordeon__content
и я фактически запускаю его вforEach()
цикле, чтобы установить высоту для всех панелей, но вы поняли идею.2) Используйте переменную CSS, чтобы развернуть активный элемент
Затем используйте переменную CSS, чтобы установить
max-height
значение, когда у элемента есть.active
класс.Последний пример
Таким образом, полный пример выглядит следующим образом: сначала переберите все панели accordeon и сохраните их
scrollHeight
значения в виде переменных CSS. Затем используйте переменную CSS в качествеmax-height
значения активного / расширенного / открытого состояния элемента.Javascript:
CSS:
И там у вас есть это. Адаптивная анимация максимальной высоты с использованием только CSS и нескольких строк кода JavaScript (jQuery не требуется).
Надеюсь, что это поможет кому-то в будущем (или моей будущей личности для справки).
источник
Для тех, кто не переполняется, а скрывается от отрицательного поля:
(некрасиво, но пока только один)
источник
Другое простое решение (не очень элегантное, но и не слишком уродливое) - поместить внутреннюю часть,
div / span
затем получить его рост ($(this).find('span).height()
).Вот пример использования этой стратегии:
(Этот конкретный пример использует этот трюк для анимации максимальной высоты и избегает задержки анимации при свертывании (при использовании большого числа для свойства максимальной высоты).
источник