(function($){
// 변수
var win = $(window);
var viewDoc = $('html, body');
var info = $('.info');
var recommend = true;
var countScroll = 0;
var winH;
// 기능
// 함수
var setWinHFn = function(){
winH = win.outerHeight();
info.css({height:winH + 'px'});
};
var setScrollFn = function(n){
viewDoc.animate({scrollTop:n + 'px'}, function(){
recommend = true;
});
};
// =================================
setWinHFn();
setScrollFn(0);
// 이벤트
win.on('resize', function(){
setWinHFn();
});
viewDoc.on('mousewheel DOMMouseScroll', function(e){
var winScrollTop = win.scrollTop();
var evt = e.originalEvent;
// console.log(e.type);
// mousewheel : evt.wheelDelta -> -120 | 120
// mousewheel : evt.detail -> 0
// DOMMouseScroll : evt.detail -> -3 | 3
var delta = 0;
(e.type === 'DOMMouseScroll') ? delta = evt.detail * -40 : delta = evt.wheelDelta;
// console.log( delta );
if(recommend){
if(delta < 0 && winScrollTop >= 0 && countScroll <= 0){
countScroll += 1;
setScrollFn(countScroll);
}else if(winScrollTop <= winH && delta > 0 && countScroll > 0){
countScroll = 0;
setScrollFn(countScroll);
}
// console.log(winH, winScrollTop, countScroll);
}
});
})(jQuery);
===============================================
순서
// 1. .info의 높이를 브라우저화면의 높이만큼 재설정
// 2. 실시간(win.on(resize))으로 브라우저크기가 변경되면 같이 높이도 변경 (함수 setWinHFn() )
// 3. 마우스 휠을 움직였을때. 움직였음을 파악하자 (이벤트 : mousewheel, 범위 : $('html, body') )
// 4. 일부 브라우저는(firefox)는 mousewheel 이 없다. (firefox는 DOMMouseScroll)
// 5. 스크롤 처리에 대한 범위를 확장 (마우스 휠, 터치움직임, 트랙/터치패드)
// 6. 현시점에서는 가로로 긴 모니터들도 많아졌기에 화면마다 변화하는 것을 제작하기에는 다소 진부
// 권장은 첫화면만(상단) 움직이는 정도로 권장하여, 해당 스크롤위치로 한번에 이동효과
'coding > jQuery' 카테고리의 다른 글
0723 / jQuery - landing (0) | 2021.07.25 |
---|---|
0722 / jQuery - parallax _02 생성 (0) | 2021.07.23 |
0722 / jQuery - parallax 생성 (0) | 2021.07.23 |
0715 / jQuery - rwd_반응형 브라우저 (0) | 2021.07.21 |
jQuery - scroll (move 기능 추가) 만들기 (0) | 2021.07.21 |