본문으로 바로가기



토글 슬라이드


var spa = (function ( $ ) {
    // 모듈 스코프 변수 선언
    var
    // 상수 설정
    configMap = {
        extended_height : 334,
        extended_title : 'Click to retract',
        retracted_height : 16,
        retracted_title : 'Click to extend',
        template_html : '<div class="chat-slider"><\/div>'
    },

        // 그 외 나머지 모듈 스코프 변수 선언
        $chatSlider,
        toggleSlider, onClickSlider, initModule;

    // DOM 메서드 /toggleSlider/
    // 슬라이더 높이를 조정
    //
    toggleSlider = function () {
        var
        slider_height = $chatSlider.height();

        // 슬라이더가 닫혀 있으면 연다
        if ( slider_height === configMap.retracted_height ) {
            $chatSlider
                .animate({ height : configMap.extended_height })
                .attr( 'title', configMap.extended_title )
            return true;
        }

        // 슬라이더가 열려 있으면 닫는다
        else if ( slider_height === configMap.extended_height ) {
            $chatSlider
                .animate({ height : configMap.retracted_height })
                .attr( 'title', configMap.retracted_title );
            return true;
        }
        // 슬라이더 상태가 전환되는 동안에는 아무 일도 하지 않는다
        return false;
    }

    // 이벤트 핸들러 /oncickSlider/
    // 클릭 이벤트를 받고 toggleSlider를 호출
    //
    onClickSlider = function ( event ) {
        toggleSlider();
        return false;
    };

    // public 메서드 /initModule/
    // 초기 상태 설정 및 기능 제공
    //
    initModule = function ( $container ) {

        // HTML 렌더링
        $container.html( configMap.template_html );
        console.log($container);
        $chatSlider = $container.find( '.chat-slider' );


        // 슬라이더 높이 및 제목 초기화
        // 클릭 이벤트와 이벤트 핸들러 바인딩 $chatSlider
        $chatSlider
            .attr( 'title', configMap.retracted_title )
            .click( onClickSlider );

        return true;
    };

    return { initModule : initModule };

}( jQuery ));

// DOM이 준비되면 SPA를 실행 제이쿼리의 ready 메서드를
//
$(function(){
    spa.initModule( $('#chat') );
});

See the Pen spa 채팅슬라이드 토글 by jaeheekim (@jaehee) on CodePen.



Jaehee's e-room


'Code Lab' 카테고리의 다른 글

Tab menu (prototype 방식)  (0) 2015.10.26
CSS3 아코디언 메뉴  (0) 2015.10.16
전체 선택, 해제 (JavaScript)  (0) 2015.10.02
퀵 메뉴 & Go to button  (0) 2015.09.23
슬라이딩 배너(무한롤링)  (0) 2015.09.22