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日

相关文章

  • js页面滚动时层智能浮动定位实现(jQuery/MooTools)

    实现 js 页面滚动时层智能浮动定位,可以使用 jQuery 或 MooTools 这样的 JavaScript 库。下面是实现步骤的详细攻略: 步骤一:在 HTML 页面中添加需要浮动定位的层 首先,在你的 HTML 页面中添加需要浮动定位的层。例如,你的页面中有一个 <div> 容器,里面包含一个 <p> 标签和一张图片: &lt…

    css 2023年6月10日
    00
  • 表格的头部固定效果通过css及jquery分别实现

    表格的头部固定效果是指当表格数据很多时,页面滚动时表头始终显示在页面顶部,便于查看数据。这个效果可以通过CSS和jQuery分别实现。 通过CSS实现表头固定效果 实现原理 通过CSS中的position: sticky与top属性实现,将表头固定在一定位置上,当表格区域滚动到一定位置时,表头就会被固定在页面顶部。 实现步骤 在CSS中定义表格头部样式 th…

    css 2023年6月10日
    00
  • vue实现下拉菜单效果

    以下是基于Vue实现下拉菜单效果的完整攻略,其中包含两个示例说明: 步骤1:创建Vue实例 首先,我们需要使用Vue框架来实现下拉菜单的效果。因此,我们需要在页面中引入Vue.js,然后创建一个Vue实例。具体代码如下: <!doctype html> <html> <head> <title>Vue下拉菜单示…

    css 2023年6月10日
    00
  • 更加强大!Photoshop CC 2014新功能详细介绍(图文)

    更加强大!Photoshop CC 2014新功能详细介绍(图文) Photoshop CC 2014是Adobe公司在2014年6月发布的全新版Photoshop,带来了许多强大的新功能,让设计师和摄影师能够更加轻松地实现想象中的创意。本文将对Photoshop CC 2014的新功能进行详细介绍。 直译功能 Photoshop CC 2014新增了直译功…

    css 2023年6月10日
    00
  • CSS实现ul和li横向排列的两种方法

    下面是CSS实现ul和li横向排列的两种方法的攻略: 方法一:使用display:inline-block 使用display:inline-block是CSS实现ul和li横向排列最常见的方法之一。 具体步骤如下: 在ul选择器中添加display: inline-block,将ul设置为行内块元素。 在li选择器中添加display:inline-blo…

    css 2023年6月10日
    00
  • css让table不显示边框的代码在火狐和谷歌浏览器中无效

    要使表格不显示边框,一般可以设置table的border为0,或者使用CSS的border-collapse属性来控制表格边框的合并。但是在某些情况下,这种设置在火狐和谷歌浏览器中可能会无效。以下为解决方法: 方法一:添加样式“border-style:none !important;” 可以在CSS中额外添加一个样式,来明确指定边框样式为“none”。这个…

    css 2023年6月10日
    00
  • 浅谈pc和移动端的响应式的使用

    下面是关于“浅谈PC和移动端响应式的使用”的完整攻略。 什么是响应式设计? 响应式设计是一种设计方法,它能够使网站在不同的设备上展现不同的样式和布局。这种方法可以通过媒体查询、弹性网格布局和图片自适应等方式实现。 响应式设计的原理 响应式设计基于媒体查询,能够让网站在不同的设备上自动适应不同的样式。 媒体查询是CSS3的一个新功能,它根据不同的设备分别应用不…

    css 2023年6月10日
    00
  • css 之空格处理的方法

    CSS 中的空格处理非常重要,因为它经常会导致布局和样式的变化。下面是一些处理 CSS 中空格的方法: 1. 学会使用组合选择器 组合选择器可以用来选择同时满足多个条件的元素。其中一个条件可以是父元素和子元素之间的空格,这被称为后代选择器。例如,如果要选择 div 内的所有 p 元素,可以使用以下选择器: div p { color: red; } 上面的选…

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