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

接下来我将为您详细讲解如何利用纯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日

相关文章

  • 教你用javascript实现随机标签云效果_附代码

    教你用javascript实现随机标签云效果 什么是标签云 标签云是一种展示标签/关键词的方式,通常使用多个字体大小和颜色来区分不同标签的重要程度或分类。标签云设计旨在方便用户快速找到自己想要的内容。 实现标签云的基本原理 使用JavaScript实现标签云的基本原理是:分析页面中的标签内容,给它们设置不同的字体大小和颜色,然后使用CSS样式控制它们的显示效…

    css 2023年6月10日
    00
  • vue前端性能优化之预加载和懒加载示例详解

    Vue前端性能优化之预加载和懒加载示例详解 前言 随着互联网信息的爆炸式增长,用户使用大量的移动设备上网冲浪,对网站的访问速度提出了更高的要求。为了提高网站的性能,我们可以使用预加载和懒加载这两种技术。 预加载 预加载是指在页面加载完成以及用户行为之前,提前加载所需的资源,从而提高页面的响应速度和用户体验。常用的预加载测试方法有以下两种: link标签方式实…

    css 2023年6月10日
    00
  • div清除浮动css样式代码分享(4种方法)

    这里为大家介绍一下“div清除浮动CSS样式代码分享(4种方法)”。 什么是浮动 在css中,浮动是指让一个元素脱离标准流,靠近另一个元素显示的一种布局方式。浮动可以使元素分布在页面上,让页面更加美观。 什么是浮动清除 当一个元素浮动时,它的父元素不会自适应其高度,导致父元素的高度为0,这就是浮动导致的布局问题。 浮动清除就是一种解决浮动导致的布局问题的方式…

    css 2023年6月9日
    00
  • 使用CSS 给表单必选项添加星号的实现方法

    要给表单必选项添加星号,可以通过CSS中的伪类选择器来实现。下面是具体步骤: 在HTML中标记出必选项。例如,在一个表单字段中,可以在相关标签(如)中添加class或者其他属性来标识出必选项。 <label class="required">Name:</label> <input type="te…

    css 2023年6月10日
    00
  • css常用代码分享(css圆角代码、渐变、密码框)

    下面是关于”CSS常用代码分享”的攻略。 CSS圆角代码 圆角可以让一个元素的边角呈现出圆润的效果,可以让UI更加美观。而CSS中实现圆角效果主要有如下几种方式。 使用border-radius属性 border-radius属性是最常用的方式来实现圆角效果,如下所示: .example { border-radius: 10px; } 这样就给使用.exa…

    css 2023年6月10日
    00
  • CSS数字列表实现方法

    下面就是详细讲解CSS数字列表实现方法的完整攻略。 什么是CSS数字列表 CSS数字列表(也叫CSS计数器)是指CSS中的一个功能,可以按照指定格式生成一系列连续的数字,并将这些数字与指定的HTML元素相连,用来实现元素的自动编号。 例如: 第一步 第二步 第三步 HTML代码为: <ol> <li>第一步</li> &l…

    css 2023年6月10日
    00
  • 30个开发人员有用的CSS代码片段整理值得借鉴

    首先我需要解释一下什么是“30个开发人员有用的CSS代码片段整理值得借鉴”以及它的背景和意义。 “30个开发人员有用的CSS代码片段整理值得借鉴”是一篇博客文章,由一名前端开发人员整理并发布。这篇文章收集了30个CSS代码片段,这些代码片段可以帮助开发人员快速解决日常开发中遇到的一些常见问题,提高开发效率。 现在我来为你详细讲解一下这篇文章的完整攻略: 1.…

    css 2023年6月9日
    00
  • CSS中margin边界叠加问题及解决方案

    当相邻的两个盒子之间有margin时,它们之间的距离不一定是两个盒子的margin之和。这种情况被称为margin边界叠加问题。这种问题可能会使得我们页面上的布局出现意料之外的对齐问题。 什么是margin边界叠加问题? 当一个元素的margin-bottom与其下一个兄弟元素的margin-top接触到一起时,它们的margin会发生合并,具体表现为取它们…

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