Задать вопрос
yuumatov
@yuumatov
FrontEnd разработчик, минималист

Как получить высоту только видимой части блока?

Столкнулся с такой задачей, нужно получать высоту видимой части блока. Как можно это сделать есть идеи?
Для понимания накидал такую инфографику)
65f809f0bd2fe628803431.png
  • Вопрос задан
  • 201 просмотр
Подписаться 1 Средний Комментировать
Решения вопроса 1
delphinpro
@delphinpro Куратор тега CSS
frontend developer
простая математика. исходные данные: координаты блока относительно окна браузера (elemtnt.getBoundingClientRect()) и высота окна (window.height).

Если y_top <= 0 и y_bottom >= window.height То высота видимой части блока равна высоте экрана (первая ваша картинка).
Если y_top > 0 и y_bottom < window.height То высота видимой части блока равна высоте это блока (весь виден).
Если y_top > 0 и y_bottom > window.height То высота видимой части блока равна высоте экрана минус верхняя позиция (вторая картинка).
Если y_top < 0 и y_bottom < window.height То высота видимой части блока равна значению нижней позиции (третья картинка).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@its2easyy
можно попробовать IntersectionObserver и в нем смотреть IntersectionObserverEntry: intersectionRatio, ratio умножать на высоту элемента и получится видимый размер.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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