티스토리 뷰
728x90
반응형
안녕하세요
찐망고입니다.
스크롤을 내리다 보면 어느 틈인가 나타나는 탑버튼..
다시 스크롤을 올리면 사라지는데요
그거 해볼 거임
이전 탑버튼애니메이션도 참고해 주시고요
자바스크립트 top 버튼 애니메이션
안녕하세요 찐망고입니다. 웹사이트에서 페이지가 길어질 때 나오는 top버튼 top버튼을 누르면 자연스럽게 페이지위로 올라가는 애니메이션을 적용해 볼까 합니다. 제이쿼리에는 animate()라는 메
uiweb.tistory.com
jQuery
// top버튼 애니메이션
$(".topBtn").click(function() {
$("html, body").animate({ scrollTop: 0 }, 500);
return false;
})
// 스크롤 이벤트
$(".topBtn").hide();
$(window).on('scroll', function(){
const scrollTop = $(window).scrollTop();
const scrollOffset = $(".story").offset().top;
console.log(scrollTop, scrollOffset)
if(scrollTop < scrollOffset) {
$(".topBtn").hide();
} else {
$(".topBtn").show();
}
})
Javascript
// top버튼 애니메이션
const topBtn = document.querySelector(".topBtn");
topBtn.addEventListener("click", function() {
window.scrollTo({ top: 0, behavior: 'smooth' });
return false;
});
// 스크롤이벤트
topBtn.style.display = "none";
window.addEventListener('scroll', function() {
// pageYOffset은 현재 스크롤 위치를 가져오는 속성
// 모든 브라우저가 지원하지 않을 수 있으므로 두 값중 하나라도 정의되어 있으면 그 값을 할당
// window.scrollY가 window.pageYOffset과 동일한 값을 반환
const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
const scrollOffset = document.querySelector(".story").offsetTop;
console.log(scrollTop, scrollOffset);
if (scrollTop < scrollOffset) {
topBtn.style.display = "none";
} else {
topBtn.style.display = "block";
}
});
이전 포스팅과 비교해 볼 때 top버튼 애니메이션 코드가 조금 다른데요.
이번 코드가 조금 더 간단하고 직관적이죠?
단점이라면 'smooth'는 최신브라우저에서 지원되지만, IE11 이전 버전에선 지원되지 않습니다.
머 지금이야 상관없겠죠?
아래 스크롤 이벤트 코드는 현재 스크롤 위치를 가져오는 것인데
일부 오래된 버전에서는 ' window.pageYOffset'이나 ' document.documentElement.scrollTop'을
지원하지 않을 수 있어 대비된 코드가 필요합니다.
아래는 수정된 코드입니다.
const topBtn = document.querySelector('.topBtn');
topBtn.style.display = "none";
function getScrollTop() {
return window.pageYOffset !== undefined ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop;
}
window.addEventListener('scroll', function() {
const scrollTop = getScrollTop();
const scrollOffset = document.querySelector(".story").offsetTop;
console.log(scrollTop, scrollOffset);
if (scrollTop < scrollOffset) {
topBtn.style.display = "none";
} else {
topBtn.style.display = "block";
}
});
728x90
반응형
'WEB > JS코드' 카테고리의 다른 글
JavaScript로 클릭한 메뉴 항목에만 클래스 추가하기 (0) | 2024.05.28 |
---|---|
자바스크립트 top 버튼 애니메이션 - requestAnimationFrame() (0) | 2024.03.21 |
자바스크립트 tab만들기 (0) | 2024.03.19 |
css와 js를 이용한 자동 롤링 슬라이드 배너 (2) | 2024.03.05 |
jQuery.marquee 텍스트 자동 롤링 (0) | 2024.03.04 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 크로스브라우징
- 피그마플러그인
- 시멘틱마크업
- uiux
- 웹표준
- UI디자인
- padding
- 스마트폰해상도
- JavaScript
- 반응형웹
- 웹디자인
- 포토샵합성
- uxdesign
- margin
- 자바스크립트숫자카운트
- JavaScriptTips
- css
- Border
- 슬라이드플러그인
- uidesign
- 프로그래밍기초
- boxmodel
- 웹접근성
- CSS3
- slickAPI
- 코딩교육
- css4
- 디자인팁
- css그리드
- Slick
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
글 보관함