Как определить, прокручивается ли div вниз?
Как определить, не используя jQuery или любую другую библиотеку JavaScript, если div с вертикальной полосой прокрутки прокручивается до конца?
Мой вопрос заключается не в том, как прокручивать до конца. Я знаю, как это сделать. Я хочу определить, прокручивается ли div до конца.
Это не работает:
if (objDiv.scrollTop == objDiv.scrollHeight)
Ответы
Ответ 1
Вы довольно близко используете scrollTop == scrollHeight
.
scrollTop
относится к верхней части положения прокрутки, которая будет scrollHeight - offsetHeight
Ваше утверждение if должно выглядеть так (не забудьте использовать тройные равенства):
if( obj.scrollTop === (obj.scrollHeight - obj.offsetHeight))
{
}
Изменить: Исправлен мой ответ, был совершенно неправ
Ответ 2
Возвращает true, если элемент находится в конце его прокрутки, а false, если это не так.
element.scrollHeight - element.scrollTop === element.clientHeight
Сеть разработчиков Mozilla
Ответ 3
Чтобы получить правильные результаты, принимая во внимание такие вещи, как возможность границы, горизонтальную полосу прокрутки и/или число плавающих пикселей, вы должны использовать...
el.scrollHeight - el.scrollTop - el.clientHeight < 1
ПРИМЕЧАНИЕ.. Вы должны использовать clientHeight вместо offsetHeight, если хотите получить правильные результаты. offsetHeight даст вам правильные результаты только тогда, когда el не имеет рамки или горизонтальной полосы прокрутки.
Ответ 4
Немного поздно для этой вечеринки, но ни один из вышеприведенных ответов не работает особенно хорошо, когда...
- Экранное масштабирование применяется к ОС для дисплеев UHD
- Масштабирование/масштабирование применяется к браузеру
Для размещения всех возможных ситуаций вам необходимо округлить расчетную позицию прокрутки:
Math.ceil(element.scrollHeight - element.scrollTop) === element.clientHeight