利用纯CSS3实现tab选项卡切换示例代码

yizhihongxing

接下来我将为您详细讲解如何利用纯CSS3实现tab选项卡切换,以下是完整攻略:

1. HTML结构

首先我们需要搭建好选项卡的HTML结构,一般来说包括选项卡头和选项卡内容两部分。其中,选项卡头通常由一个ul元素和多个li元素组成,而选项卡内容则由多个div元素组成,每个div元素代表一个选项卡的内容。

我们可以像下面这样搭建HTML结构:

<div class="tab">
  <ul class="tab-header">
    <li class="active">选项卡1</li>
    <li>选项卡2</li>
    <li>选项卡3</li>
  </ul>
  <div class="tab-content">
    <div class="active">选项卡1的内容</div>
    <div>选项卡2的内容</div>
    <div>选项卡3的内容</div>
  </div>
</div>

2. CSS样式

接下来我们需要为选项卡添加CSS样式,其中包括选项卡头和选项卡内容的样式。

2.1 选项卡头样式

为了使选项卡头能够水平排列,在ul元素上需要添加display:flex;以及justify-content:space-between;属性,同时在li元素上需要添加float:left;和margin-right:20px;属性,在最后一个li元素上需要清除浮动。

为了实现选项卡头的切换效果,需要给当前选中的li元素添加一个active类,同时给其添加不同的颜色和背景色。我们可以使用CSS伪类:focus+伪类选择器:not(:focus)来实现,具体写法为:

.tab-header li.active, .tab-header li:focus:not(:active) {
  color: #fff;
  background-color: #000;
}

2.2 选项卡内容样式

为了实现选项卡内容的切换效果,我们需要先将所有的选项卡内容设置为隐藏状态,只显示当前选项卡的内容。我们可以使用CSS属性display:none;来实现。

在选项卡内容的样式中,需要使用.position: absolute;属性来实现选项卡内容的定位效果。同时,在当前选项卡内容上需要添加一个.active类,显示出当前选项卡内容。

具体CSS样式如下:

.tab {
  position: relative;
}
.tab-header {
  display: flex;
  justify-content: space-between;
}
.tab-header li {
  float: left;
  margin-right: 20px;
}
.tab-header li:last-child {
  float: none;
  margin-right: 0;
}
.tab-header li.active, .tab-header li:focus:not(:active) {
  color: #fff;
  background-color: #000;
}
.tab-content > div {
  display: none;
  position: absolute;
  top: 30px;
  left: 0;
}
.tab-content > div.active {
  display: block;
}

3. JavaScript交互

为了实现选项卡的交互效果,我们需要使用JavaScript来控制选项卡头和选项卡内容的切换。

具体实现方式如下:

const tabs = document.querySelectorAll('.tab-header li');
const tabContent = document.querySelectorAll('.tab-content > div');

tabs.forEach((tab, index) => {
  tab.addEventListener('click', () => {
    // 隐藏所有的tab content
    tabContent.forEach(content => {
      content.classList.remove('active');
    });

    // 隐藏所有的tab header
    tabs.forEach(tab => {
      tab.classList.remove('active');
    });

    // 设置当前选中的tab content
    tabContent[index].classList.add('active');

    // 设置当前选中的tab header
    tab.classList.add('active');
  });
});

这段代码会监听选项卡头的点击事件,当用户点击某个选项卡头时,会隐藏所有选项卡内容和选项卡头,然后显示当前选中的选项卡内容和选项卡头。

示例1:水平选项卡

下面是一个水平选项卡的示例,可以参考下面的代码实现:

<div class="tab horizontal">
  <ul class="tab-header">
    <li class="active">选项卡1</li>
    <li>选项卡2</li>
    <li>选项卡3</li>
  </ul>
  <div class="tab-content">
    <div class="active">选项卡1的内容</div>
    <div>选项卡2的内容</div>
    <div>选项卡3的内容</div>
  </div>
</div>
.tab.horizontal .tab-header {
  display: flex;
  justify-content: space-between;
}
.tab.horizontal .tab-header li {
  float: none;
  margin-right: 0;
}
.tab.horizontal .tab-content > div {
  position: relative;
  top: 0;
  left: 0;
}

示例2:垂直选项卡

下面是一个垂直选项卡的示例,可以参考下面的代码实现:

<div class="tab vertical">
  <ul class="tab-header">
    <li class="active">选项卡1</li>
    <li>选项卡2</li>
    <li>选项卡3</li>
  </ul>
  <div class="tab-content">
    <div class="active">选项卡1的内容</div>
    <div>选项卡2的内容</div>
    <div>选项卡3的内容</div>
  </div>
</div>
.tab.vertical .tab-header {
  flex-direction: column;
}
.tab.vertical .tab-header li {
  float: none;
  margin-right: 0;
}
.tab.vertical .tab-content > div {
  position: relative;
  top: 0;
  left: 0;
}

以上就是标准的markdown格式文本,包含HTML结构、CSS样式和JavaScript实现部分详细说明以及两个示例演示。如果您还有任何疑问,请随时提出。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用纯CSS3实现tab选项卡切换示例代码 - Python技术站

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

相关文章

  • 20个CSS/CSS3常用样式汇总

    20个CSS/CSS3常用样式汇总 CSS/CSS3是Web开发中不可或缺的一部分,本攻略将汇总20个常用的CSS/CSS3样式,包括文本样式、背景样式、边框样式、动画样式等。 1. 文本样式 1.1. 文本阴影 使用text-shadow属性可以为文本添加阴影效果。例如: h1 { text-shadow: 2px 2px 2px #000; } 上述代码…

    css 2023年5月18日
    00
  • CSS教程:inline-block在各浏览器的显示

    CSS教程:inline-block在各浏览器的显示 inline-block 是 CSS 中常用的一个属性,用于将元素设置成内联块级元素。在各种布局样式中,inline-block 常常用来解决一些文本和块元素混排的问题。但是,在不同的浏览器中,inline-block 显示效果存在差异。接下来我们就来详细讲解一下 inline-block 在各浏览器的显…

    css 2023年6月10日
    00
  • html、css和jquery相结合实现简单的进度条效果实例代码

    下面我将详细讲解“html、css和jquery相结合实现简单的进度条效果实例代码”的攻略,包含以下内容: HTML进度条代码实现 CSS样式设计 JQuery实现进度条动画效果 1. HTML进度条代码实现 首先,在HTML中实现进度条需要先定义一个\<div>容器,其属性class值设置为“bar”。然后在该容器中添加另一个\<div&…

    css 2023年6月9日
    00
  • ul设置列表为一行2条的方法

    若想将列表设置为一行两条,可以采用以下方法: 通过CSS样式表来修改 可以使用CSS的display和float属性来实现将列表横向排列,实现该功能的代码为: <style> ul li { display: inline-block; width: 49%; float: left; } </style> <ul> &l…

    css 2023年6月10日
    00
  • div中加入span右对齐后出现换行显示两种解决思路

    让我来详细讲解一下“div中加入span右对齐后出现换行显示两种解决思路”。 首先,我们先来看一下问题的具体描述。 当我们在一个 div 中加入一个 span,并在 CSS 中给该 span 设定为右对齐时,如果 div 宽度不足以容纳该 span,那么就会出现换行的情况。我们希望解决这个问题,使得该 span 仍然可以右对齐,且不会出现换行的情况。 接下来…

    css 2023年6月10日
    00
  • ul, li, a怎么用(谷歌/火狐/ie6/7/8)中测试

    ul, li, a 是 HTML 中常用的标签,用于创建无序列表和超链接。在测试中,需要测试这些标签在不同浏览器中的兼容性。本文将提供一些关于如何测试 ul, li, a 标签在不同浏览器中的兼容性的完整攻略,包括使用浏览器兼容性测试工具和手动测试的示例说明。 使用浏览器兼容性测试工具 可以使用浏览器兼容性测试工具来测试 ul, li, a 标签在不同浏览器…

    css 2023年5月18日
    00
  • JS实现表格响应式布局技巧

    JS实现表格响应式布局技巧可以通过以下步骤来实现: 步骤一:设置表格的HTML结构 首先,需要在HTML文件中创建表格结构。一般来说,表格需要一个表头,以及一个或多个表格行。如下所示: <table> <thead> <tr> <th>Name</th> <th>Age</th&g…

    css 2023年6月10日
    00
  • 深入浅析CSS 选择器分组

    深入浅析CSS选择器分组的完整攻略如下: 什么是CSS 选择器分组 在CSS中,选择器是一种用于选择指定 HTML 元素的标识符。通过选择器,我们可以为 HTML 元素应用样式。而CSS选择器分组则是将多个选择器组合在一起,用逗号分隔。这样就可以将多个选择器应用到同一个样式上,从而避免重复的代码,简洁代码量,并提高代码的可读性和可维护性。例如,以下代码将h1…

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