利用纯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 switch case

    JavaScript switch case语句是一种用于多个分支情况的控制流语句。它与if-else语句相似,但要更加简洁和易于阅读。通常来说,switch case可帮助开发人员避免编写过多的if-else嵌套,从而提高代码效率。 下面是JavaScript switch case的语法: switch(expression) { case value1…

    Web开发基础 2023年3月30日
    00
  • Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件

    Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件 Fx.Morph 在Mootools 1.2中引入的Fx.Morph类是一种基于Tween的动画效果,可以让您实现令人惊叹的动态效果。例如,您可以使用Fx.Morph类使元素的宽度和高度逐渐变化,或者使图像的透明度逐渐变化。其基本语法如下: var myFx = new Fx.Morph(e…

    css 2023年6月11日
    00
  • CSS transform属性基础篇

    首先我们来讲解CSS的Transform属性基础篇。 什么是Transform属性? Transform是CSS3中的一个属性,它可以让我们实现元素的变形效果,比如移动、旋转、缩放等。通过对元素进行Transform变形,我们可以实现一些很炫酷的特效效果。 Transform属性语法 Transform属性的语法是: transform: none|tran…

    css 2023年6月10日
    00
  • IE9beta版本浏览器对HTML5/CSS3的支持

    IE9 beta版本浏览器对HTML5/CSS3的支持是一个备受关注的话题。本文将详细讲解IE9 beta浏览器对HTML5/CSS3的支持情况,并基于两个示例进行说明。 HTML5支持 IE9 beta版本的浏览器对HTML5的支持已经有了很大的进步,但是与其他现代浏览器相比还是存在一些缺陷。下面是IE9 beta浏览器对HTML5的主要支持情况: 支持H…

    css 2023年6月9日
    00
  • 详解移动端h5页面根据屏幕适配的四种方案

    下面是详解移动端H5页面根据屏幕适配的四种方案的完整攻略: 背景 在移动设备上,我们经常需要让网页在不同屏幕尺寸下呈现相同的效果,这就要求我们对移动端的H5页面做好适配。在这篇攻略中,我们将介绍四种移动端H5页面根据屏幕适配的方案,这四种方案分别是:viewport+rem、Media Queries、Flexible、Bootstrap 方案一:Viewp…

    css 2023年6月10日
    00
  • css3实现波纹特效、H5实现动态波浪效果

    CSS3实现波纹特效攻略: 常用技术 CSS3 transform CSS3 animation CSS3 transition box-shadow 实现步骤 首先我们需要创建一个HTML元素,为了方便,我们可以选用button元素。 然后在CSS中设置该元素的基本样式,包括大小、颜色和位置等。 接下来,我们需要设置hover伪类,当该元素被hover时,…

    css 2023年6月10日
    00
  • 用js实现的DIV+CSS编辑器代码

    使用js实现的DIV+CSS编辑器可以帮助前端开发人员快速创建和修改网页的样式。以下是实现DIV+CSS编辑器代码的完整攻略。 HTML布局 首先,我们需要在HTML页面中定义一个容器DIV,用于显示编辑器。在这个DIV中创建两个子元素,分别是编辑区和预览区,如下所示: <div id="container"> <div…

    css 2023年6月10日
    00
  • js制作支付倒计时页面

    如何使用 JavaScript 制作支付倒计时页面? 制作支付倒计时页面一般分为以下几个步骤: 在 HTML 文件中添加倒计时的显示区域。 一般可以使用一个 div 模块来包含倒计时,如下所示: <div class="countdown"> <span class="countdown-hours"…

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