티스토리 뷰
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코드' 카테고리의 다른 글
| js)스크롤 이벤트 + SVG <animate> (0) | 2024.09.10 |
|---|---|
| JavaScript로 클릭한 메뉴 항목에만 클래스 추가하기 (0) | 2024.05.28 |
| 자바스크립트 top 버튼 애니메이션 - requestAnimationFrame() (0) | 2024.03.21 |
| 자바스크립트 tab만들기 (1) | 2024.03.19 |
| css와 js를 이용한 자동 롤링 슬라이드 배너 (6) | 2024.03.05 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- CSS3
- JavaScript
- 디자인시스템
- css
- uiux
- figma
- html
- 2024웹디자인
- 머터리얼디자인
- 웹디자인개발기능사
- 반응형웹
- UX디자인
- UI디자인
- 찐망고사주
- 구글머터리얼디자인
- 오블완
- 피그마
- 웹폰트
- 웹표준
- ai사주
- seo
- 바이브코딩
- 웹디자인
- 서비스기획
- 티스토리챌린지
- 웹접근성
- 프론트엔드
- 웹퍼블리싱
- 웹디자인팁
- 디자인팁
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함