본문 바로가기
jQuery

풀페이지 만들기

by hjcode 2019. 9. 26.

스크롤이 될 섹션들을 만들어줍니다.

<div id="wrap">
    <section class="section" style="background:red;">section1</section>
    <section class="section" style="background:orange;">section2</section>
    <section class="section" style="background:yellow;">section3</section>
    <section class="section" style="background:green;">section4</section>
</div>

간단하게 스타일도 입혀줍니다.

html,
body {
    width: 100%;
    height: 100%;
    padding: 0;
    margin: 0;
}

#wrap {
    position: fixed;
    width: 100%;
    height: 100%;
    background: gray;
}

#wrap .section {
    position: relative;
    width: 100%;
    height: 100%;
}

스크롤 이벤트를 이용하여 만들고 트윈맥스로 애니메이션을 주었습니다.

var sectionWrap = $('#wrap');
var section = $('.section');
var sectionLen = section.length;
var winHei = $(window).height();
var idx = 0;
var state = false;

section.css({'height': winHei});
section.on('mousewheel DOMMouseScroll', mouseWheel);

function mouseWheel(){

    if( state ) return;

    var delta = window.event.deltaY;
    var deltaFireFox = window.event.detail;

    ( delta > 0 || deltaFireFox > 0 ) ? idx++ : idx --;

    indexChk( idx );
}

function indexChk( $idx ){
    console.log( $idx, sectionLen )
    if( $idx < 0 ){
        idx = 0;
        return;
    }else if( $idx == sectionLen ){
        idx = sectionLen-1;
        return;
    }
	// 섹션의 처음이나 끝일 때는 이벤트 리턴
    state = true; // 스크롤 연속으로 했을때 빠르게 넘어가는 걸 막기위함
    showSection( $idx );

}

function showSection( $idx ){

    var posY = -( winHei * $idx );
    TweenMax.to( sectionWrap, 0.6, { top: posY, ease: Power4.easeInOut, onComplete:function(){
        state = false; // 애니메이션이 끝나면 다시 스크롤이 되도록 함
    } } );

}

 

반응형

'jQuery' 카테고리의 다른 글

플로팅 배너 푸터에서 멈추기  (0) 2019.09.26
스크롤 하단 체크하기  (0) 2019.09.26
농구게임 만들기  (0) 2019.09.26
제이쿼리로 슬라이드 만들기  (0) 2019.09.26
is()로 요소 검사하기  (0) 2019.09.26