Подтвердить что ты не робот

Как определить, прокручивается ли div вниз?

Как определить, не используя jQuery или любую другую библиотеку JavaScript, если div с вертикальной полосой прокрутки прокручивается до конца?

Мой вопрос заключается не в том, как прокручивать до конца. Я знаю, как это сделать. Я хочу определить, прокручивается ли div до конца.

Это не работает:

if (objDiv.scrollTop == objDiv.scrollHeight) 
4b9b3361

Ответ 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