Js原生的Tab選項卡組件

/*
    這是一個tab選項卡的js,

    html代碼樣式如下:
        <ul class="tabs">
            <li class="tab">one</li>
            <li class="tab">two</li>
            <li class="tab">three</li>
        </ul>

        <div class="tabs-content">
            <div class="tab-item">1</div>
            <div class="tab-item">2</div>
            <div class="tab-item">3</div>
        </div>

     css代碼樣式如下:
        .tab-item {
            display: none;
        }

        .tab-item.active {
            display: block;
        }
 */

(function () {
    let tabs = document.getElementsByClassName('tabs');
    let contents = document.getElementsByClassName('tabs-content');
    let lens = tabs.length;

    if (lens >= 1) {
        let i;
        for (i = 0; i <= lens - 1; i++) {
            let tab = tabs[i];
            let content = contents[i];
            bindClick(tab, content);
            initTab(tab, content);
        }
    }

    function bindClick(tab, content) {
        tab.addEventListener('click', function (e) {
            let event = e || window.event;
            let target = event.target || event.srcElement;
            if (target.nodeName.toLocaleLowerCase() == 'li') {
                tabToggle(target, tab, content);
            }
        })
    }

    function tabToggle(target, tab, content) {
        let index, i;
        let tabsList = tab.children;
        let contentsList = content.children;

        for (i = 0; i <= tabsList.length - 1; i++) {
            if (target === tabsList[i]) {
                index = i;
            }
            let menu = tabsList[i];
            let panel = contentsList[i];
            menu.className = menu.className.replace(' active', '');
            panel.className = panel.className.replace(' active', '');
        }

        tabsList[index].className += ' active';
        contentsList[index].className += ' active';
    }

    function initTab(tab, content) {
        let tabsList = tab.children;
        let contentsList = content.children;

        tabsList[0].className += ' active';
        contentsList[0].className += ' active';
    }
})()
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容