일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Carousel
- JQuery
- input
- togle
- scss
- position : fixed
- Position
- transform
- bootstrap
- vw
- animate
- css animation
- 이벤트 버블링
- EventListner
- TRANSITION
- setTimeout
- sass
- navbar
- margin
- 밀리초
- z-index
- absolute
- 레이아웃
- hover
- css selector
- float : left
- form
- CSS
- display:none
- val()
- Today
- Total
Simple Is Best
13. [jQuery] Scroll Animation 본문
이번 포스팅에서는 스크롤 애니메이션에 대해서 배워보도록 하겠습니다.
오늘의 Target
스크롤 이전에는 최상단의 navbar 를 웹사이트의 대문과 색을 동일하게 유지한다.
스크롤 이후에는 최상단의 navbar 를 회색의 배경에 글씨를 검은색으로 만들어주고 오른쪽에 위치한 Our Products의 font-size 를 줄여준다.
[스크롤 이전]
[스크롤 이후]
애니메이션 제작 방법
1. CSS로 애니메이션 동작 이전의 화면을 미리 제작한다.
2. CSS로 애니메이션 동작 이후의 화면을 미리 제작한다.
3. CSS로 transition : all 1s; 로 변경할 때 몇 초에 걸려서 변경할 지 설정한다.
4. 자바스크립트 혹은 제이쿼리로 언제 변경할 지 변경point(Trigger) 를 설정한다.
HTML
<!-- 스크롤 내리면 nav-scroll 클래스 추가 -->
<div class='nav-menu'>
<h4 style='margin:0'>Fashion Mall</h4>
<p style='flex-grow: 1'></p>
<a id='show-nav'>Our Products</a>
</div>
1. 동작 이전의 화면을 미리 제작 & 3. transition : all 1s;
CSS .nav-menu
▷ background-color : transparent
: navbar의 색깔을 투명한 색깔로 하여 점보트론의 배경과 동일하게 한다.
▷ position: fixed;
: 페이지의 상단에 navbar를 fix하여 user 가 스크롤 함과 상관 없이 위치를 유지시켜 준다.
▷ z-index : 3;
: position 속성을 사용할 때 겹친다면 어떤 것을 상위로 올릴지 결정하는 속성, 값이 클 수록 위로 올라온다.
▷ transition : all 0.5s;
: 변경 이전의 화면에서 변경 이후의 화면으로 넘어 갈 때 0.5 초에 걸쳐서 변경해주는 속성
.nav-menu {
/*UI요소들*/
width : 100%;
display: flex;
align-items: center;
padding : 15px;
cursor: pointer;
/*변화 이전의 애니메이션 화면*/
background-color: transparent; /*transparent : 투명한*/
position: fixed;
color : #eee;
z-index : 3;
transition : all 0.5s;
}
2. 동작 이후의 화면을 미리 제작
CSS .nav-scroll
: 이 클래스를 스크롤 될 때 nav-menu 클래스에 추가해주면 되겠죠?!
.nav-scroll {
background-color: #f6f6f6;
color : rgba(0,0,0,0.7);
font-size : 5px;
}
4. 제이쿼리로 언제 변경할 지 변경point(Trigger) 를 설정
▷ scroll 을 하여 상위로 부터 90px 이상일 때는 애니메이션 이후 클래스('nav-scroll')을 추가해줍니다.
▷ 다시 올렸을 때 ( 90px 이하 ) 일 때는 애니메이션 이후 클래스를 다시 제거해 줍니다.
$(window).on('scroll', function() {
if ($(window).scrollTop() > 90) { // 마우스 기준 한번 스크롤 하니까 scroll 값이 90이 나옴
$('.nav-menu').addClass('nav-scroll');
} else if ($(window).scrollTop() < 90) {
$('.nav-menu').removeClass('nav-scroll');
}
});
스크롤을 활용하여 애니메이션을 주기 위해서는 몇 가지 알아야 하는 개념들이 있습니다.
1. $(window).on('scroll', function(){})
스크롤을 할 때 이벤트를 어떻게 캐치해야 할까요?
☞ $(window).on('scroll', function(){}) 를 사용 하면 됩니다.
window 는 viewport를 의미합니다.
예시를 통해서 알아봅시다. 다음의 코드는 viewport가 scroll 되었을 때 콘솔 창에서 '스크롤 중입니다' 를 출력하는 코드입니다.
$(window).on('scroll', function() {
console.log('스크롤중입니다');
})
2. $(window).scrollTop()
스크롤 될 때 유저가 스크롤을 상위로 부터 몇 px 내렸는지 알려주는 메서드입니다.
콘솔 창에는 px단위는 나오지 않습니다.
$(window).on('scroll', function() {
console.log($(window).scrollTop());
})
'JavaScript & JQuery' 카테고리의 다른 글
15. [jQuery] 이벤트 버블링 및 이벤트 메소드 (0) | 2021.08.02 |
---|---|
14. [jQuery] Tab 기능 제작하기 (0) | 2021.08.02 |
12. [JS/JQuery] Carousel (이미지 슬라이더) (0) | 2021.07.30 |
11. [JS/jQuery] 정규식으로 form 양식 검사하기 (0) | 2021.07.29 |
10. [jQuery] Animation - 2 (애니메이션 제작 관습) (0) | 2021.07.29 |