js实现简单选项卡制作

yizhihongxing

下面是详细的 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行级元素在多浏览器下的宽度问题是一个常见的问题,它常常被忽视,导致在不同浏览器下显示的宽度不一致。然而,解决这个问题并不难,我们可以采用以下方法来解决: 问题描述 CSS中的行级元素,例如 <a>, <span>, <em> 等,默认情况下只占据它们所包含文本内容的宽度,也就是说,它们的宽度由它们的内容决定。这个特性…

    css 2023年6月10日
    00
  • 将页脚固定在页面底部的CSS实战

    将页脚固定在页面底部是一个非常常见的需求,这需要使用CSS来实现。本文将介绍一些基本的CSS技巧和实践,让你能够更好地理解如何实现固定页脚效果。 CSS基础概念 在开始实现之前,我们需要了解一些CSS基础概念,这将有助于我们更好地理解如何构建CSS布局。 position属性: 定位属性,可以设置元素的定位方式。常用值有absolute、relative、f…

    css 2023年6月10日
    00
  • 巧用 -webkit-box-reflect 倒影实现各类动效(小结)

    下面我将详细讲解 “巧用 -webkit-box-reflect 倒影实现各类动效(小结)” 的完整攻略。 什么是 -webkit-box-reflect -webkit-box-reflect 是一个Webkit私有属性,用于在元素的周围添加一个反射效果,在某些情况下可以实现一些有趣的效果。 -webkit-box-reflect 主要有以下两个属性: -…

    css 2023年6月11日
    00
  • HTML+CSS+JS实现堆叠轮播效果的示例代码

    下面是HTML+CSS+JS实现堆叠轮播效果的完整攻略,包含了实现步骤以及示例说明。 一、实现步骤 1.编写HTML结构 首先,我们需要编写基本的HTML结构,包括容器以及需要轮播的子元素。具体代码如下: <div class="slider-container"> <div class="slider-ite…

    css 2023年6月10日
    00
  • Bootstrap 折叠(Collapse)插件用法实例详解

    Bootstrap 折叠(Collapse)插件用法实例详解 什么是 Bootstrap 折叠(Collapse)插件 Bootstrap 折叠(Collapse)插件是一个 JavaScript 插件,用于折叠和展开内容。它可以用于隐藏或显示大段的文本或其他 HTML 元素,只需要添加一些简单的 HTML 和 JavaScript 代码即可。 如何使用 B…

    css 2023年6月11日
    00
  • CSS使用calc()获取当前可视屏幕高度的实现

    要在CSS中获取当前可视屏幕的高度,可以使用calc()函数在Height中混合百分比和像素单位。下面是实现的步骤: 1. 确定当前视口高度 要获取当前视口的高度,需要使用ViewPort单元 (VW)。ViewPort单元的一个单位等于视口宽度的1%,所以100 VW 抵押一定等于整个视口的宽度。通过把视口高度设置为 calc(100vw / X),其中的…

    css 2023年6月9日
    00
  • 使用 CSS 构建强大且酷炫的粒子动画效果

    使用 CSS 构建强大且酷炫的粒子动画效果是一项非常有趣的任务。下面是一个完整的攻略,包含了构建粒子动画的流程和两个示例说明。 构建粒子动画的流程 1. 创建 HTML 结构 首先,我们需要创建一个 HTML 结构,用于容纳粒子动画。下面是一个简单的 HTML 结构示例: <div class="particles"><…

    css 2023年5月18日
    00
  • Python selenium find_element()示例详解

    Python selenium find_element()示例详解 简介 find_element() 是 Selenium WebDriver 中最基本的方法之一,它可以用于查找单个元素并返回对该元素的引用。在本文中,我们将为您提供有关如何使用 find_element() 方法的详细步骤以及两个示例说明。 安装Selenium 在使用 find_ele…

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