Задать вопрос
LenovoId
@LenovoId
svg, css,js

Почему getBoundingClientRect считает не правильно высоту?

Делаю аккордион с плавным изменением высоты от 50 до не известной, получаю высоту в переменную
h = el.getBoundingClientRect().height и присваиваю эту высоту родителю но не работает ? Высота присваивается но не вся ..почему то ...где я ошибся ?

Как мне убрать 70 из let h = parent.querySelector(".hidden").getBoundingClientRect().height + 70; ?

Код здесь: https://codepen.io/topicstarter/pen/NWdKGzr
  • Вопрос задан
  • 799 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@cheeroque
Вы родителю .item присваиваете высоту .hidden. Там ещё label рядом лежит, у которого своя высота есть + бордер + маргин. Замените 70 в расчёте h на высоту лейбла + его нижний маргин, и логика будет правильной. А ещё лучше просто сделайте так: let h = parent.scrollHeight;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Asokr
Скрытые элементы браузер не рендерит, поэтому размер у такого элементы не узнать.
У вас не вся высота - видимо потому, что в момент работы getBoundingClientRect() - элемент виден именно на столько...

Решение зависит от конкретной ситуации.
Я обычно позиционирую элемент абсолютно за экраном - меряю его высоту, и возвращаю на место...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы