JS 38 - 实作 Tab 页签

大家好!


样式


.tabs {
    width: 100%;
    max-width: 60em;
    display: flex;
    flex-wrap: wrap;
    background-color: #fff;
    border-radius: 0.3125em;
    margin: auto;
    padding: 5em;
    overflow: hidden;
}

.tabs > label {
    flex: 1;
    order: 1;
    background-color: #7de1c8;
    font-weight: bold;
    text-align: center;
    padding: 1em 2em;
    cursor: pointer;
    user-select: none;
    -webkit-tap-highlight-color: transparent;
}

.tabs > label:hover {
    background-color: #c8fae1;
}

.tabs > label.active {
    background-color: transparent;
    cursor: default;
}

.tabs > article {
    flex: 1 1 100%;
    order: 2;
    height: 0;
    padding: 0 2em;
    opacity: 0;
    visibility: hidden;
    overflow: hidden;
}

.tabs > label.active + article {
    height: auto;
    padding: 2em;
    opacity: 1;
    visibility: visible;
    transition: padding 0.25s,
                opacity 0.5s 0.25s;
}

程序码

Felix(window).on('load', function () {
    Felix('.tabs > label').on('click', function () {
        const children = this.parentElement.children;
        Felix.forEach(children, function (el) {
            if (el.tagName !== 'LABEL') return;
            if (el.className.indexOf('active') === -1) return;
            el.classList.remove('active');
        });
        this.classList.add('active');
    });
});

实测

<section class="tabs" data-revealing="float-in bottom">
    <label class="active">HTML</label>
    <article>...</article>
    <label>CSS</label>
    <article>...</article>
    <label>JavaScript</label>
    <article>...</article>
</section>

范例连结制作中。


差不多也到尾声了。
如果对文章有任何疑问,也欢迎在下方提问和建议!
我是 Felix,我们明天再见!


<<:  【Go】多维 slice / array

>>:  〖错误修复〗Linux CentOS 7 docker-compose 语法回应: ERROR: Couldn't connect to Docker ...

从零开始的8-bit迷宫探险【Level 14】让主角奔跑吧!Running Sam

适应了黑森林的孤寂,山姆开始这趟旅程的目的:找寻水晶。 森林虽然漆黑,但是路还算好走,山姆的脚步也...

【Day20-填充】二维图片资料要怎麽做填充?

今天简单介绍一下在处理二维图片中算是偶尔会用到的工具——填充资料 沿着各种方向填充 这边以2d-ar...

30天零负担轻松学会制作APP介面及设计【DAY 06】

大家好,我是YIYI,今天要来聊聊我想制作的APP的规格表。 动机与目的 如同【DAY 02】所说,...

系统分析师的养成之路—案例分享(4)

看完前面3个案例之後,不知道大家有没有什麽感想呢?其实合格的系统分析师真的可以让所服务的公司或客户其...

Day4 安装Vue

Vue的安装方式有很多种像我这次是使用CND的方式来使用Vue 首先呢我们可以先到Vue的网站 可以...