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日

相关文章

  • jQuery实现锁定页面元素(表格列)

    下面是“jQuery实现锁定页面元素(表格列)”的完整攻略: 什么是锁定元素(表格列) 锁定元素(表格列)是指在滚动页面时,某些元素(比如表格的列)位置固定不变,不受页面滚动影响。 实现锁定元素(表格列)的方法 实现锁定元素(表格列)的方法有很多种,下面分别介绍两种实现方式。 方式一:使用CSS实现 通过设置表格头部的CSS属性:position: fixe…

    css 2023年6月10日
    00
  • 如何在CSS中绘制曲线图形及展示动画

    在CSS中,可以使用贝塞尔曲线(Bezier Curve)来绘制曲线图形,并使用CSS动画来展示动态效果。以下是如何在CSS中绘制曲线图形及展示动画的完整攻略: 基本步骤 在CSS文件中添加以下代码,使用贝塞尔曲线绘制曲线图形: .curve { width: 200px; height: 200px; background-color: #ccc; pos…

    css 2023年5月18日
    00
  • CSS 样式表中引用图片地址在各浏览器中的差异

    引用图片是网页设计中常用的技巧。CSS 样式表中引用图片地址在不同的浏览器中有不同的差异,这可能会导致网页在某些浏览器下无法正常显示。 以下是一些可能遇到的问题以及解决方案: 1. 相对路径和绝对路径的使用 在 CSS 样式表中引用图片时,可以使用相对路径或绝对路径。相对路径是相对于 CSS 文件的路径,而绝对路径是完整的 URL 地址。 示例: backg…

    css 2023年6月9日
    00
  • 基于jquery的动画效果代码

    下面我将为您详细讲解如何基于jQuery实现动画效果。 首先,我们需要了解jQuery的动画方法,常见的包括animate()和fade***()系列方法。接下来我将以animate()方法为例,来阐述如何实现动画效果。 animate()方法 animate()方法是jQuery中用于实现动画效果的方法,其语法如下: $(selector).animate…

    css 2023年6月11日
    00
  • 深入浅析HTML5中的SVG

    深入浅析HTML5中的SVG 什么是SVG SVG(Scalable Vector Graphics,可缩放矢量图形)是一种基于 XML 的标记语言,用于描述二维的矢量图形。与位图不同,SVG 图形是矢量图形,它可以通过数学公式来描述图形中的各种元素,因此可以无损放大或缩小而不失真,这使得 SVG 成为制作图标、图表和动画等多媒体元素的理想选择。 SVG 的…

    css 2023年6月11日
    00
  • 基于Ajax+div的“左边菜单、右边内容”页面效果实现

    基于Ajax+div的“左边菜单、右边内容”页面效果实现是一种常见的动态网页设计思路,它的核心是通过异步请求加载内容,避免页面跳转以及资源重复加载,从而提高用户体验。 具体实现流程如下: 准备HTML和CSS结构。通常采用两栏布局,左侧为菜单栏,右侧为内容栏。可以使用CSS实现两栏等高布局,以保持美观。同时为了能够定位内容,需要通过div标签以及唯一的id属…

    css 2023年6月10日
    00
  • 清理无用的CSS样式比较有用的几个工具

    清理无用的CSS样式是优化网站性能的一个重要步骤之一。下面是使用比较有用的工具来清理无用的CSS样式的攻略,主要分为以下两个步骤: 第一步:查找无用的CSS 查找无用的CSS有多种方法,比如手动查找、使用浏览器开发者工具等。但是手动查找会十分麻烦、费时,并且容易漏掉一些细节,因此推荐使用一些工具来自动化查找无用的CSS。下面介绍几个比较有用的工具。 1.1 …

    css 2023年6月9日
    00
  • Vue3中使用defineCustomElement 定义组件详解

    下面我将为你详细讲解Vue3中使用defineCustomElement定义组件的完整攻略。 什么是defineCustomElement? 在Vue3中,我们可以通过defineCustomElement方法来定义一个自定义元素,自定义元素是Web Components技术的核心概念之一,它允许我们创建出具有完全自定义行为的HTML元素,它可以被认为是一种…

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