[UI] 탭메뉴(tab menu)

설명

vanillaJS로 제작된 기본 탭 메뉴

구현

See the Pen [VanillaJs] 탭 메뉴 by recordboy (@recordboy) on CodePen.

HTML

<div id="tab">
    <div class="btn">
        <button type="button">01</button>
        <button type="button">02</button>
        <button type="button">03</button>
        <button type="button">04</button>
    </div>
    <div class="cnt">
        <div>content01 content01 content01 content01 content01 content01 content01 content01 content01 content01</div>
        <div>content02 content02 content02 content02 content02 content02 content02 content02 content02 content02</div>
        <div>content03 content03 content03 content03 content03 content03 content03 content03 content03 content03</div>
        <div>content04 content04 content04 content04 content04 content04 content04 content04 content04 content04</div>
    </div>
</div>

CSS

#tab {
    border: 1px solid #ccc;
    width: 300px;
}

#tab .btn:after {
    content: '';
    display: block;
    clear: both;
}

#tab .btn button {
    float: left;
    border: 0;
    width: 25%;
    height: 30px;
    cursor: pointer;
    outline: none;
    background-color: #ccc;
}

#tab .btn button:hover {
    background-color: #fff;
}

#tab .btn button.on {
    background-color: #fff;
}

#tab .cnt div {
    display: none;
}

#tab .cnt div.on {
    display: block;
}

JavaScript

window.addEventListener('load', function(){

    var tab = document.getElementById('tab'),
        btn = tab.getElementsByClassName('btn')[0],
        cnt = tab.getElementsByClassName('cnt')[0],
        index = 0;

    btn.children[0].classList.add('on');
    cnt.children[0].classList.add('on');

    for(var i = 0;i < btn.children.length;i++){
        (function(target){
            btn.children[target].addEventListener('click', function(){
                tabOn(target);
            });
        })(i);
    };

    function tabOn(target){
        for(var i = 0;i < btn.children.length;i++){
            btn.children[i].classList.remove('on');
            cnt.children[i].classList.remove('on');
        };
        btn.children[target].classList.add('on');
        cnt.children[target].classList.add('on');
    }

});
updated_at 08-04-2019