무한 스크롤의 매우 간단한 구현
9677 단어 htmljquerywebdevjavascript
우리의 경우 페이지 매김은 지난 4일 동안의 콘텐츠를 표시하기 위해 페이지 하단에 도달할 때마다 "다음 날 로드"버튼을 클릭해야 하는 "추가 로드"형식입니다.
우리가 원했던 것은 페이지 하단으로 스크롤하자마자 다음 며칠을 표시하는 것이었고 이 자습서에서 다룰 내용입니다.
설정
전제 조건
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js">
1) 윈도우 스크롤 이벤트 생성
//Infinite scroll
$(window).on("scroll", function() {
});
2) 전체 문서의 높이에 대한 변수와 스크롤 위치를 결정하는 변수를 만듭니다.
scroll 이벤트 내부에 2개의 변수를 생성합니다. 우리는 그것들을 scrollHeight와 scrollPos라고 부를 것입니다.
var scrollHeight = $(document).height();
var scrollPos = $(window).height() + $(window).scrollTop();
3) 수학을 해보자!
기억하세요: 사용자가 페이지 하단으로 스크롤할 때마다 이벤트가 발생하기를 원합니다.
다음 조건문을 사용하여 페이지 하단에 도달했는지 확인할 수 있습니다.
if ((scrollHeight - scrollPos) / scrollHeight == 0) {
조건문이 충족되면 이벤트가 트리거되기를 원합니다.
이 경우 버튼의 클래스 이름은 .load-more-days-button입니다. 해당 버튼은 페이지 끝에 도달하면 클릭됩니다.
if ((scrollHeight - scrollPos) / scrollHeight == 0) {
$('.load-more-days-button').click();
}
따라서 모두 합치면 다음을 얻습니다.
//Infinite scroll
$(window).on("scroll", function() {
var scrollHeight = $(document).height();
var scrollPos = $(window).height() + $(window).scrollTop();
if ((scrollHeight - scrollPos) / scrollHeight == 0) {
$('.load-more-days-button').click();
console.log("bottom!");
}
});
그게 다야? 끝났어?!? 음 — 예, 하지만 아니요.
효과가있다.
하지만 좋지 않습니다. 왜요?
이제 문제를 해결해 보겠습니다.
이 줄을 대체해 보겠습니다.
if ((scrollHeight - scrollPos) / scrollHeight == 0) {
대신:
if(((scrollHeight - 300) >= scrollPos) / scrollHeight == 0) {
이 코드 줄은 스크롤 이벤트가 페이지 하단에서 300픽셀(또는 그 미만)일 때 트리거되도록 합니다. (원한다면 300을 다른 것으로 구성할 수 있습니다)
이것은 데스크탑과 모바일에서 훌륭하게 작동합니다!
마무리
모든 것을 종합하면 코드는 다음과 같이 보일 것입니다.
//Infinite Scroll
$(window).on("scroll", function() {
//page height
var scrollHeight = $(document).height();
//scroll position
var scrollPos = $(window).height() + $(window).scrollTop();
// fire if the scroll position is 300 pixels above the bottom of the page
if(((scrollHeight - 300) >= scrollPos) / scrollHeight == 0){
$('.load-more-days-button').click();
}
});
실제 예here를 볼 수 있습니다.
Reference
이 문제에 관하여(무한 스크롤의 매우 간단한 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/sakun/a-super-simple-implementation-of-infinite-scrolling-3pnd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
//Infinite Scroll
$(window).on("scroll", function() {
//page height
var scrollHeight = $(document).height();
//scroll position
var scrollPos = $(window).height() + $(window).scrollTop();
// fire if the scroll position is 300 pixels above the bottom of the page
if(((scrollHeight - 300) >= scrollPos) / scrollHeight == 0){
$('.load-more-days-button').click();
}
});
Reference
이 문제에 관하여(무한 스크롤의 매우 간단한 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sakun/a-super-simple-implementation-of-infinite-scrolling-3pnd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)