У меня есть блок div (называемый поток) с переменным количеством содержимого внутри. Для этого divbox установлено переполнение auto.
Теперь, что я пытаюсь сделать, это когда прокрутить использование до нижней части этого DIV-блока, загрузить больше контента на страницу, я знаю, как это сделать (загрузить контент), но я не знаю, как определить, когда пользователь прокрутил до конца тега div? Если бы я хотел сделать это для всей страницы, я бы взял .scrollTop и вычел это из .height.
Но я не могу сделать это здесь?
Я попытался взять .scrollTop из потока, а затем обернуть все содержимое внутри div, называемого внутренним, но если я возьму innerHeight потока, он возвращает 564px (div установлен в 500 как высота) и высоту 'innner' он возвращает 1064, и прокрутка, когда в нижней части div говорит 564.
Что я могу сделать?
источник
innerHeight()
сообщать десятичные числа. В случае уменьшения масштаба пользователя суммаscrollTop()
иinnerHeight()
всегда будет, по крайней мере, на долю меньшеscrollHeight
. В итоге я добавил буферную зону размером 20 пикселей. В результате условным былоif(el.scrollTop() + el.innerHeight() >= el[0].scrollHeight - 20)
гдеel
равно$(this)
.Я нашел решение, которое, когда вы прокручиваете свое окно и конец деления, показанного снизу, выдает предупреждение.
В этом примере, если вы прокрутите вниз, когда div (
.posts
) завершит работу, вы получите предупреждение.источник
var running = false
объявленная до этого. Внутри условно я проверяюif(!running) { running = true; // and continue logic }
Так он вызывается только один раз! Когда AJAX завершится, установитеrunning = false;
Хотя вопрос был задан 5,5 лет назад, он все же более чем актуален в современном контексте UI / UX. И я хотел бы добавить свои два цента.
Источник: https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Determine_if_an_element_has_been_totally_scrolled
Некоторые элементы не позволят вам прокрутить всю высоту элемента. В этих случаях вы можете использовать:
источник
Просто дополнительная заметка, когда я нашел это, когда искал решение для фиксированного div, который я хочу прокрутить. Для моего сценария я обнаружил, что предпочтительнее учитывать отступы на div, чтобы я мог точно достичь конца. Итак, расширяя ответ @ Dr.Molle, я добавляю следующее
Это даст вам точное местоположение, включая отступы и границы
источник
это работает для меня, хотя
источник
Если вам нужно использовать это в div, у которого overflow-y скрыт или прокручивается, вам может понадобиться нечто подобное.
Я обнаружил, что ceil был необходим, потому что prop scrollHeight, кажется, округляется, или, возможно, какая-то другая причина, заставляющая его отключаться менее чем на 1.
источник
Если вы не используете функцию Math.round (), решение, предложенное Dr.Molle, не будет работать в некоторых случаях, когда окно браузера имеет масштаб.
Например, $ (this) .scrollTop () + $ (this) .innerHeight () = 600
$ (this) [0] .scrollHeight yields = 599.99998
600> = 599,99999.
Вот правильный код:
Вы также можете добавить несколько дополнительных пикселей поля, если вам не нужно строгое условие
источник
В простом использовании DOM вы можете проверить состояние
если это правда, то вы достигли конца.
источник
Если кто-то получает
scrollHeight
какundefined
, то выберите 1-й подэлемент элемента:mob_top_menu[0].scrollHeight
источник
не уверен, если это поможет, но это то, как я это делаю.
У меня есть индексная панель, которая больше окна, и я позволяю ей прокручиваться, пока не будет достигнут этот индекс. Затем я фиксирую это в положении. Процесс переворачивается, когда вы прокручиваете страницу вверх.
С уважением.
источник
Хотя это было задано почти 6 лет назад, еще горячей темой в UX-дизайне, вот демонстрационный фрагмент, если любой новичок хотел использовать
источник
Ребята, это решение проблемы масштабирования, оно работает со всеми уровнями масштабирования, если вам это нужно:
источник
Это код на GitHub.
источник
Вот другая версия.
Код клавиши - это функция scroller (), которая принимает ввод как высоту div, содержащего секцию прокрутки, используя overflow: scroll. Это приблизительно 5 пикселей сверху или 10 пикселей снизу как сверху или снизу. В противном случае это слишком чувствительно. Кажется, 10px - это минимум. Вы увидите, что это добавляет 10 к высоте div, чтобы получить высоту дна. Я предполагаю, что 5px может работать, я не тестировал экстенсивно. YMMV. scrollHeight возвращает высоту внутренней области прокрутки, а не отображаемую высоту div, которая в данном случае составляет 400 пикселей.
источник