반응형
스크롤 위치에 따라 요소들에 Class를 추가해준다던지, 효과를 변경할 수 있다.
현재 스크롤 위치 구하기
$(document).scrollTop();
특정 요소의 위치 구하기
offset().top을 사용하면 문서 상단으로부터 특정 섹션, div가 있는 위치를 구할 수 있다.
$("#section3").offset().top;
scroll()기본 코드
$(window).scroll(function(){
var h = $(document).scrollTop(); //현재 스크롤 위치
if(h > 200) { // 스크롤 위치가 200을 넘으면
} else {
}
});
응용
현재 내 스크롤 위치와 특정요소의 위치를 통해 사이트에서 다양하게 구현이 가능하다.
1) 배경색이 검정색인 섹션(#section1)을 지날때는 상단메뉴에 class명 white를 추가해주어, 글자색을 흰색으로 변경해주고, 로고 이미지 경로 변경으로 이미지 컬러도 변경해준다.
if(h > offset && h < offset2) { //특정 div(#section1)가 있는 곳을 지날 때
mn.addClass("white");
logo.attr("src", "/img/symbol_white.svg");
}
2) 사이트에서 스크롤을 내릴때 스크롤이 200이상 내려가면 상단 메뉴에 Class명 fixed를 추가해주고, 로고도 변경해준다.
if(h > 200) { //스크롤이 200 이상에 위치할 때
mn.addClass("fixed");
mn.removeClass("white");
logo.attr("src", "/img/symbol.svg");
}
3) 그 외에는 추가한 모든 Class를 지워주고, 이미지 경로도 원래대로 돌려준다.
else { // 그 외
mn.removeClass("fixed");
mn.removeClass("white");
logo.attr("src", "/img/logo.svg");
}
전체코드
$(window).scroll(function(){
var
mn = $("#header");
logo = $("#header #logo img");
h = $(document).scrollTop();
offset = $("#section1").offset().top;
offset2 = $("#section2").offset().top;
if(h > offset && h < offset2) { //특정 div(#section1)가 있는 곳을 지날 때
mn.addClass("white");
logo.attr("src", "/img/symbol_white.svg");
} else if(h > 200) { //스크롤이 200 이상에 위치할 때
mn.addClass("fixed");
mn.removeClass("white");
logo.attr("src", "/img/symbol.svg");
} else { // 그 외
mn.removeClass("fixed");
mn.removeClass("white");
logo.attr("src", "/img/logo.svg");
}
});
반응형
'개발 > js·jquery' 카테고리의 다른 글
[CSS/jQuery] 크기가 다른 Grid item 자동 정렬 하기 (0) | 2024.08.15 |
---|---|
[jQuery] input 엔터 시 특정 함수 실행 (0) | 2024.08.12 |
자바스크립트 예약어 (2) | 2024.02.27 |
[jQuery] 새로고침 시 스크롤 위치 맨위로 리셋해주는 스크립트 (4) | 2023.11.19 |
[jQuery] Swiper 슬라이더 버튼 컬러 변경 (Navigation, Pagination) (4) | 2023.11.06 |
[jQuery] 날짜선택 플러그인 DatePicker 옵션 (2) | 2023.09.12 |
[jQUery/JS] 음악 비디오 재생/일시정지/음소거 버튼 만들기 (2) | 2023.08.21 |
[jQuery] 결과값 숫자로 보여주기 (숫자에 콤마 찍기) (2) | 2023.06.05 |