JS实现的不规则TAB选项卡效果代码

实现不规则TAB选项卡效果需要使用一些CSS和JavaScript技巧,下面是一个完整的攻略。

HTML结构

我们首先要准备一个基本的HTML结构,可以参考以下代码:

<div class="tab-container">
  <div class="tab-buttons">
    <button class="active">Tab 1</button>
    <button>Tab 2</button>
    <button>Tab 3</button>
    <button>Tab 4</button>
  </div>
  <div class="tab-content">
    <div class="tab-panel active">
      <p>Content for Tab 1 goes here.</p>
    </div>
    <div class="tab-panel">
      <p>Content for Tab 2 goes here.</p>
    </div>
    <div class="tab-panel">
      <p>Content for Tab 3 goes here.</p>
    </div>
    <div class="tab-panel">
      <p>Content for Tab 4 goes here.</p>
    </div>
  </div>
</div>

这个结构包含了一个tab-container的容器,其中包含tab-buttons和tab-content两个子容器。tab-buttons包含了所有的tab按钮,而tab-content包含了所有的tab面板。每个按钮和面板都有一个相应的class,用于JavaScript操作。

CSS样式

接下来,我们需要为每个按钮和面板设置一些CSS样式,以使它们按照我们期望的方式显示。可以参考以下代码:

.tab-buttons {
  display: flex;
  flex-wrap: wrap;
}

.tab-buttons button {
  background-color: white;
  border: none;
  margin-right: 10px;
  margin-bottom: 10px;
  padding: 5px 10px;
  font-size: 16px;
  font-weight: bold;
  border-radius: 5px;
  cursor: pointer;
}

.tab-buttons button:hover {
  background-color: #f2f2f2;
}

.tab-buttons .active {
  background-color: #f2f2f2;
}

.tab-content {
  border: 1px solid #ccc;
  padding: 10px;
}

.tab-panel {
  display: none;
}

.tab-panel.active {
  display: block;
}

这里我们对.tab-buttons设置了flex布局以实现自动换行,并设置了按钮的样式,包括颜色、边框、间距等等。对于.tab-panel,我们设置了display:none来让它们默认隐藏,而.active类则表示当前选中的面板需要显示。

JavaScript实现

最后,我们需要使用JavaScript来实现选项卡切换的逻辑,首先需要为每个按钮绑定一个点击事件,然后根据它的index值来切换对应的面板。可以参考以下代码:

const tabButtons = document.querySelectorAll('.tab-buttons button');
const tabPanels = document.querySelectorAll('.tab-panel');

function showPanel(index) {
  // 隐藏所有面板
  tabPanels.forEach(panel => panel.classList.remove('active'));
  // 显示选中的面板
  tabPanels[index].classList.add('active');
}

tabButtons.forEach((button, index) => {
  button.addEventListener('click', () => {
    // 高亮当前选中的按钮
    tabButtons.forEach(button => button.classList.remove('active'));
    button.classList.add('active');
    // 切换对应的面板
    showPanel(index);
  });
});

这个代码使用了forEach和classList等JavaScript方法和属性来实现选项卡切换的逻辑。首先,我们使用querySelectorAll方法获取所有的按钮和面板元素,然后定义一个showPanel函数来切换面板的显示状态。在按钮点击事件中,我们需要高亮当前按钮、切换对应面板展示,并将其余的面板隐藏。

示例

下面是两个示例,一个有4个选项卡,另一个有6个选项卡,它们都使用上面的HTML、CSS和JavaScript代码实现:

示例1

<div class="tab-container">
  <div class="tab-buttons">
    <button class="active">Tab 1</button>
    <button>Tab 2</button>
    <button>Tab 3</button>
    <button>Tab 4</button>
  </div>
  <div class="tab-content">
    <div class="tab-panel active">
      <p>Content for Tab 1 goes here.</p>
    </div>
    <div class="tab-panel">
      <p>Content for Tab 2 goes here.</p>
    </div>
    <div class="tab-panel">
      <p>Content for Tab 3 goes here.</p>
    </div>
    <div class="tab-panel">
      <p>Content for Tab 4 goes here.</p>
    </div>
  </div>
</div>

<script>
const tabButtons = document.querySelectorAll('.tab-buttons button');
const tabPanels = document.querySelectorAll('.tab-panel');

function showPanel(index) {
  // 隐藏所有面板
  tabPanels.forEach(panel => panel.classList.remove('active'));
  // 显示选中的面板
  tabPanels[index].classList.add('active');
}

tabButtons.forEach((button, index) => {
  button.addEventListener('click', () => {
    // 高亮当前选中的按钮
    tabButtons.forEach(button => button.classList.remove('active'));
    button.classList.add('active');
    // 切换对应的面板
    showPanel(index);
  });
});
</script>

示例2

<div class="tab-container">
  <div class="tab-buttons">
    <button class="active">Tab 1</button>
    <button>Tab 2</button>
    <button>Tab 3</button>
    <button>Tab 4</button>
    <button>Tab 5</button>
    <button>Tab 6</button>
  </div>
  <div class="tab-content">
    <div class="tab-panel active">
      <p>Content for Tab 1 goes here.</p>
    </div>
    <div class="tab-panel">
      <p>Content for Tab 2 goes here.</p>
    </div>
    <div class="tab-panel">
      <p>Content for Tab 3 goes here.</p>
    </div>
    <div class="tab-panel">
      <p>Content for Tab 4 goes here.</p>
    </div>
    <div class="tab-panel">
      <p>Content for Tab 5 goes here.</p>
    </div>
    <div class="tab-panel">
      <p>Content for Tab 6 goes here.</p>
    </div>
  </div>
</div>

<script>
const tabButtons = document.querySelectorAll('.tab-buttons button');
const tabPanels = document.querySelectorAll('.tab-panel');

function showPanel(index) {
  // 隐藏所有面板
  tabPanels.forEach(panel => panel.classList.remove('active'));
  // 显示选中的面板
  tabPanels[index].classList.add('active');
}

tabButtons.forEach((button, index) => {
  button.addEventListener('click', () => {
    // 高亮当前选中的按钮
    tabButtons.forEach(button => button.classList.remove('active'));
    button.classList.add('active');
    // 切换对应的面板
    showPanel(index);
  });
});
</script>

注意,这两个示例使用了完全相同的HTML、CSS和JavaScript代码,区别在于有多少个选项卡。而CSS样式和JavaScript逻辑是通用的,可以兼容不同数量的选项卡。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现的不规则TAB选项卡效果代码 - Python技术站

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

相关文章

  • HTML5移动端开发中的Viewport标签及相关CSS用法解析

    让我来详细讲解“HTML5移动端开发中的Viewport标签及相关CSS用法解析”的完整攻略。 Viewport标签介绍 在移动端开发中,Viewport是一个非常关键的概念。Viewport是指浏览器视口,也就是用户当前可以看到的网页区域。而Viewport标签则是在HTML文档中指定Viewport的具体属性,来达到更好的移动端适配效果。 Viewpor…

    css 2023年6月9日
    00
  • DIV+CSS通过border样式制作带箭头提示框效果

    使用DIV+CSS通过border样式制作带箭头提示框效果可以让我们轻松地实现一个简洁明了的弹出提示框,提高用户体验。以下为详细攻略。 第一步:HTML结构 首先,我们需要在HTML中添加一个容器元素,并在其中添加相关内容。例如,下面这段代码是一个带箭头提示框的基本HTML结构: <div class="tooltip"> &…

    css 2023年6月10日
    00
  • CSS3 3D酷炫立方体变换动画的实现

    接下来我将详细讲解”CSS3 3D酷炫立方体变换动画的实现”的完整攻略。 需求背景 在网页设计中,动画效果可以使网站更加生动有趣,而3D立方体变换动画效果更是让人印象深刻,下面就一步步来实现这样一个效果。 实现步骤 设置立方体的视角和3D旋转 我们需要将立方体转成3D形式,只需要将 transform-style 属性设置为 preserve-3d 。接着,…

    css 2023年6月10日
    00
  • JavaScript之Canvas_动力节点Java学院整理

    JavaScript之Canvas_动力节点Java学院整理 本文主要介绍如何使用Canvas创建具有动态效果的图形和动画。 Canvas介绍 Canvas是HTML5中新增的HTML元素之一,类似于画布,可以在画布上绘制各种图形、动画等。它是基于JavaScript的API实现的,可以使用js代码来操作Canvas。Canvas使用起来相对简单但也有一些坑…

    css 2023年6月10日
    00
  • 在JS中如何使用css变量详解

    在JS中如何使用CSS变量详解 在前端开发中,CSS变量是一种非常实用的技术,它可以帮助开发者更加方便地管理和调整样式。本攻略将详细讲解如何在JS中使用CSS变量,并提供两个示例说明。 1. CSS变量的基本语法 CSS变量是一种新的CSS特性,它可以让开发者定义自己的变量,并在样式表中使用。CSS变量的基本语法如下: :root { –variable-…

    css 2023年5月18日
    00
  • CSS的后代选择器基础使用示例

    来讲解一下CSS的后代选择器基础使用示例的攻略。 什么是后代选择器? 后代选择器是CSS选择器中的一种,用于选择符合特定后代关系的元素。后代选择器使用空格来连接两个不同的选择器,表示选择具有特定关系的父元素和其子孙元素。 后代选择器基础示例 我们可以通过一些实例来说明后代选择器的使用。 示例1:使用后代选择器改变某个元素下的所有段落字体颜色 <html…

    css 2023年6月9日
    00
  • 结合CSS3的布局新特征谈谈常见布局方法

    结合CSS3的布局新特征谈谈常见布局方法 CSS3引入了许多新的布局特性,使得网页布局更加灵活和多样化。本攻略将结合CSS3的布局新特征,讨论常见的网页布局方法,并提供两个示例说明。 1. 常见的网页布局方法 1.1. 流式布局 流式布局是一种基于百分比的布局方法,它可以根据浏览器窗口大小自动调整页面布局。流式布局可以使页面在不同设备上呈现出更好的可读性和可…

    css 2023年5月18日
    00
  • 全面了解css行高line-height的用法

    在这里,我将为你详细讲解“全面了解CSS行高line-height的用法”的完整攻略。 什么是CSS的行高line-height CSS的行高line-height是应用于文本之间的间距,它指文本行的基线之间的距离。通常用于设置文本的行间距、行框的高度和垂直居中等。 行高有固定值和相对值两种。固定值是像素(px)、点数(pt)、英寸(inch)等单位,相对值…

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