js实现简单选项卡制作

下面是详细的 js 实现简单选项卡制作攻略:

选项卡制作的实现原理

选项卡是一种可以切换不同内容的功能组件,一般实现选项卡的方式主要是通过CSS控制各个选项卡的显示和隐藏,并通过JS实现点击切换选项卡的功能。大致的实现过程如下:

  1. 选项卡的标题切换: 点击不同的标题,显示对应的内容。一般使用事件委托的方式来绑定点击事件。
  2. 选项卡内容的显示和隐藏:通过CSS控制各个选项卡内容的display属性来控制显示和隐藏。

实现步骤

HTML结构

在 HTML 结构中需要定义选项卡的标题和内容部分。一般情况下会将它们放到一个容器元素中,例如<div class="tab-container">:

<div class="tab-container">
    <ul class="tab-nav">
        <li class="active">Tab 1</li>
        <li>Tab 2</li>
        <li>Tab 3</li>
    </ul>
    <div class="tab-content">
        <div class="active">Content 1</div>
        <div>Content 2</div>
        <div>Content 3</div>
    </div>
</div>

tab-nav是选项卡标题的容器,tab-content则是选项卡内容的容器,active表示选项卡当前处于激活状态。在默认情况下,第一个选项卡以及对应的内容处于激活状态。

CSS样式

通过CSS样式来控制选项卡的布局和样式,使得选项卡更易于使用和调整。

.tab-container {
    overflow: hidden;
    position: relative;
}

.tab-nav {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.tab-nav li {
    cursor: pointer;
    padding: 10px;
    font-size: 16px;
    font-weight: bold;
}

.tab-nav li.active {
    background-color: #ccc;
}

.tab-content > div {
    display: none;
    padding: 20px;
}

.tab-content > div.active {
    display: block;
}

JS代码

  1. 选项卡标题切换:通过事件委托绑定点击事件。
// 获取选项卡标题元素
const tabNav = document.querySelector('.tab-nav');

// 绑定点击事件
tabNav.addEventListener('click', e => {
    // 获取被点击的选项卡标题元素
    const target = e.target;

    if (target.tagName === 'LI') {
        // 清除所有选项卡标题的激活状态
        const tabNavItems = document.querySelectorAll('.tab-nav li');
        tabNavItems.forEach(item => {
            item.classList.remove('active');
        });

        // 设置被点击的选项卡标题为激活状态
        target.classList.add('active');

        // 切换选项卡内容
        changeTab(target.dataset.index);
    }
});

这段代码首先获取了所有的选项卡标题元素,通过事件委托的方式绑定点击事件。这里通过判断事件源元素是否为选项卡标题元素(即li),从而确定是否执行具体的点击事件。在点击事件中,首先清除所有选项卡标题元素的激活状态,然后将被点击的选项卡标题元素设置为激活状态。最后调用changeTab函数切换选项卡内容。

  1. 选项卡内容的切换: 根据选项卡标题的索引值获取对应的选项卡内容并设置为激活状态。
function changeTab(index) {
    // 获取所有选项卡内容元素
    const tabContents = document.querySelectorAll('.tab-content > div');

    // 清除所有选项卡内容的激活状态
    tabContents.forEach(content => {
        content.classList.remove('active');
    });

    // 设置对应的选项卡内容为激活状态
    const targetTabContent = tabContents[index];
    targetTabContent.classList.add('active');
}

这段代码通过changeTab函数完成对选项卡内容的切换。首先获取所有选项卡内容元素,然后清除它们的激活状态。接着获取被点击的选项卡标题对应的索引值,用于获取对应的选项卡内容并将其设置为激活状态。

示例说明

以下是两个关于选项卡实现的示例说明:

示例一

在这个例子中,我们展现了一个选项卡的布局样式,包括选项卡标题和对应的内容。

<div class="tab-container">
    <ul class="tab-nav">
        <li class="active" data-index="0">Tab 1</li>
        <li data-index="1">Tab 2</li>
        <li data-index="2">Tab 3</li>
    </ul>
    <div class="tab-content">
        <div class="active">Content 1</div>
        <div>Content 2</div>
        <div>Content 3</div>
    </div>
</div>
.tab-container {
    overflow: hidden;
    position: relative;
}

.tab-nav {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.tab-nav li {
    cursor: pointer;
    padding: 10px;
    font-size: 16px;
    font-weight: bold;
}

.tab-nav li.active {
    background-color: #ccc;
}

.tab-content > div {
    display: none;
    padding: 20px;
}

.tab-content > div.active {
    display: block;
}
// 获取选项卡标题元素
const tabNav = document.querySelector('.tab-nav');

// 绑定点击事件
tabNav.addEventListener('click', e => {
    // 获取被点击的选项卡标题元素
    const target = e.target;

    if (target.tagName === 'LI') {
        // 清除所有选项卡标题的激活状态
        const tabNavItems = document.querySelectorAll('.tab-nav li');
        tabNavItems.forEach(item => {
            item.classList.remove('active');
        });

        // 设置被点击的选项卡标题为激活状态
        target.classList.add('active');

        // 切换选项卡内容
        changeTab(target.dataset.index);
    }
});

function changeTab(index) {
    // 获取所有选项卡内容元素
    const tabContents = document.querySelectorAll('.tab-content > div');

    // 清除所有选项卡内容的激活状态
    tabContents.forEach(content => {
        content.classList.remove('active');
    });

    // 设置对应的选项卡内容为激活状态
    const targetTabContent = tabContents[index];
    targetTabContent.classList.add('active');
}

示例二

下面是项目中选项卡的实现,选项卡内容是项目进度的不同阶段。

<div class="tab-container">
    <ul class="tab-nav">
        <li class="active" data-index="0">阶段一</li>
        <li data-index="1">阶段二</li>
        <li data-index="2">阶段三</li>
        <li data-index="3">阶段四</li>
        <li data-index="4">阶段五</li>
    </ul>
    <div class="tab-content">
        <div class="active">
            <h5>组队申请</h5>
            <p>参加活动的战友们首先需要组队申请</p>
        </div>
        <div>
            <h5>项目策划</h5>
            <p>完成阶段一后,您可以开始进行项目策划</p>
        </div>
        <div>
            <h5>形象设计</h5>
            <p>设计专家将会根据您的特点来为您量身打造设计方案 </p>
        </div>
        <div>
            <h5>产品研发</h5>
            <p>经验丰富的研发团队将会为您成功开发产品 ,并不断优化</p>
        </div>
        <div>
            <h5>售后服务</h5>
            <p>您在使用过程中遇到任何问题,我们将在第一时间内进行为您解决</p>
        </div>
    </div>
</div>
.tab-container {
    overflow: hidden;
    position: relative;
}

.tab-nav {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    justify-content: space-around;
}

.tab-nav li {
    cursor: pointer;
    padding: 10px;
    font-size: 16px;
}

.tab-nav li.active {
    border-bottom: 3px solid #0099ff;
}

.tab-content > div {
    display: none;
    padding: 20px;
}

.tab-content > div.active {
    display: block;
    padding-top: 0;
}
// 获取选项卡标题元素
const tabNav = document.querySelector('.tab-nav');

// 绑定点击事件
tabNav.addEventListener('click', e => {
    // 获取被点击的选项卡标题元素
    const target = e.target;

    if (target.tagName === 'LI') {
        // 清除所有选项卡标题的激活状态
        const tabNavItems = document.querySelectorAll('.tab-nav li');
        tabNavItems.forEach(item => {
            item.classList.remove('active');
        });

        // 设置被点击的选项卡标题为激活状态
        target.classList.add('active');

        // 切换选项卡内容
        changeTab(target.dataset.index);
    }
});

function changeTab(index) {
    // 获取所有选项卡内容元素
    const tabContents = document.querySelectorAll('.tab-content > div');

    // 清除所有选项卡内容的激活状态
    tabContents.forEach(content => {
        content.classList.remove('active');
    });

    // 设置对应的选项卡内容为激活状态
    const targetTabContent = tabContents[index];
    targetTabContent.classList.add('active');
}

这个选项卡的应用比较广泛,我们可以用于主页的各个导航页面的展示。用户可以通过选项卡简单直观地了解各个项目的具体情况。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现简单选项卡制作 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • CSS外边距设置方法详解

    CSS外边距(margin)指元素边框(border)与相邻元素或包含元素之间的距离。外边距可以用来控制元素之间的间隔以及元素相对于浏览器窗口或包含元素的位置。 外边距可以通过四个方向分别设置,分别为margin-top、margin-right、margin-bottom和margin-left。也可以使用简写属性margin,按照顺序设置上、右、下、左四…

    Web开发基础 2023年3月20日
    00
  • swiper 自动图片无限轮播实现代码

    下面是详细的讲解。 Swiper 自动图片无限轮播实现 Swiper 是一个基于 jQuery 的开源、免费的移动端触摸滑动插件,可以基于它实现图片无限轮播的效果。 具体步骤如下: 1. 引入 Swiper 库的 CSS和JS文件 在 HTML 文件的 标签内引入 CSS 文件,在 标签内引入 JS 文件。 <head> <link rel…

    css 2023年6月10日
    00
  • 页面图片浮动左右滑动效果的简单实现案例

    下面是“页面图片浮动左右滑动效果的简单实现案例”的完整攻略: 1. 实现步骤 1.1 HTML结构 需要在HTML中定义一个div容器,用于容纳所有图片,并为每个图片添加一个标签,实现点击图片跳转。 <div class="image-container"> <a href="#"> <i…

    css 2023年6月10日
    00
  • bootstrap多层模态框滚动条消失的问题

    让我为你详细讲解“bootstrap多层模态框滚动条消失的问题”的完整攻略。 问题描述 在使用Bootstrap框架开发多层模态框时,可能会遇到滚动条消失的问题。当打开第一个模态框时,滚动条正常显示,但是当在第一个模态框中打开第二个模态框时,滚动条就会消失,导致用户无法向下滚动页面。 解决方法 1. 自定义CSS 我们可以自定义一些CSS样式来解决这个问题。…

    css 2023年6月10日
    00
  • 纯 CSS3实现的霓虹灯特效

    让我详细讲解如何使用纯 CSS3 实现霓虹灯特效。 1. 霓虹灯简介 霓虹灯本身是一种广告灯箱,通过气体放电和荧光发光,呈现出明亮、绚丽的光效,在近年来也逐渐成为了 web 设计中常用的一种特效,给网页带来了别样的视觉体验。 2. 过程 2.1 HTML 结构 我们首先需要确定 HTML 结构,在 body 中加入一个 div,设置宽度、高度、背景色、边框等…

    css 2023年6月9日
    00
  • JavaScript webpack模块打包器如何优化前端性能

    JavaScript webpack模块打包器是一种优化前端性能的工具,可以将多个JavaScript文件打包成单个文件,实现减少HTTP请求次数、减小文件体积等优化效果。下面是优化前端性能的完整攻略: 1. 使用webpack进行代码压缩 Webpack可以通过UglifyjsPlugin插件对JavaScript代码进行压缩,减少文件体积。在webpac…

    css 2023年6月13日
    00
  • css之Display、Visibility、Opacity、rgba和z-index: -1的区别

    下面是关于CSS中Display、Visibility、Opacity、rgba和z-index: -1的详细讲解。 Display display属性用于控制元素的显示方式,常用的分别是block、inline和none。其中: block:块级元素,按照默认宽度自动换行; inline:内联元素,不会换行,会随父级的宽度变化而变化; none:不显示元素…

    css 2023年6月10日
    00
  • table-cell完成左侧定宽,右侧定宽及左右定宽等布局的实现方法

    使用table-cell布局是一种简单而强大的网页布局技术,可以实现左侧定宽、右侧定宽以及左右都定宽的布局。以下是实现这些布局的步骤: 左侧定宽,右侧自适应布局 可以通过将左右两个区块设置为表格单元格,并使用CSS的width属性和display属性对区块进行设置。 HTML结构: <div class="container"&gt…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部