js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)

本文将为大家介绍如何使用JavaScript和CSS实现圆角边框TAB选项卡滑动门效果,本文将会分享两款实现方案,让大家得以更好的理解和掌握这个知识点。

一、实现方案1

1.1 HTML结构

首先,我们需要如下HTML结构:

<div class="tab">
  <ul class="tab-list">
    <li><a href="#tab1">Tab 1</a></li>
    <li><a href="#tab2">Tab 2</a></li>
    <li><a href="#tab3">Tab 3</a></li>
  </ul>

  <div id="tab1" class="tab-content">Tab 1 content goes here.</div>
  <div id="tab2" class="tab-content">Tab 2 content goes here.</div>
  <div id="tab3" class="tab-content">Tab 3 content goes here.</div>
</div>

在上述代码中,我们使用了一个div元素作为选项卡的容器,内部包含了一个ul元素作为选项卡标签栏,以及若干个div元素作为选项卡内容。

1.2 CSS样式

接下来,我们需要为以上的HTML代码提供相关的CSS样式,实现选项卡的基本样式和圆角边框。请参考下列CSS代码:

.tab {
  position: relative;
}

.tab-list {
  list-style-type: none;
  display: flex;
  margin: 0;
  padding: 0;
}

.tab-list li {
  flex: 1;
  text-align: center;
  margin: 0 5px;
  padding: 10px;
  border-radius: 6px 6px 0 0;
  background-color: #ccc;
  cursor: pointer;
}

.tab-list li.active {
  background-color: #fff;
}

.tab-content {
  position: absolute;
  top: 50px;
  left: 0;
  right: 0;
  padding: 10px;
  border: 1px solid #ccc;
  border-top: none;
  border-radius: 0 6px 6px 6px;
  background-color: #fff;
}

上述代码中,我们定义了一个.tab类作为选项卡的容器,同时为其设置了相对定位。.tab-list类用于定义选项卡的标签栏样式,我们使用了flex布局实现了横向排列的标签栏。.tab-list li类用于定义每个选项卡标签的样式。而.active类用于表示当前选项卡的激活状态,其背景颜色为白色。

.tab-content类用于定义选项卡内容的样式,其中的绝对定位表示选项卡内容将覆盖在标签栏下方,其边框样式实现了圆角效果。

1.3 JavaScript代码

最后,我们需要添加一些JavaScript代码,以实现选项卡的切换效果。请参考下列代码:

let tabs = document.querySelectorAll('.tab-list li');
let contents = document.querySelectorAll('.tab-content');

tabs.forEach((tab, index) => {
  tab.addEventListener('click', () => {
    tabs.forEach((otherTab) => {
      otherTab.classList.remove('active');
    });
    tab.classList.add('active');

    contents.forEach((content) => {
      content.style.display = 'none';
    });
    contents[index].style.display = 'block';
  });
});

上述代码中,我们首先获取了所有的选项卡标签元素和选项卡内容元素,并添加了点击事件监听器。每次点击选项卡标签时,我们会将其他选项卡标签的.active类移除,并将当前选项卡标签添加.active类,以使其显示为选中状态。

最后,我们将所有选项卡内容元素隐藏,只让当前选中的选项卡内容显示出来,以达到选项卡的切换效果。

二、实现方案2

2.1 HTML结构

这次我们会略微改变HTML结构:

<div class="tab">
  <ul class="tab-list">
    <li><a href="#tab1">Tab 1</a></li>
    <li><a href="#tab2">Tab 2</a></li>
    <li><a href="#tab3">Tab 3</a></li>
    <li class="slider"></li>
  </ul>

  <div id="tab1" class="tab-content">Tab 1 content goes here.</div>
  <div id="tab2" class="tab-content">Tab 2 content goes here.</div>
  <div id="tab3" class="tab-content">Tab 3 content goes here.</div>
</div>

我们在选项卡标签栏中添加了一个空的li元素,用于作为滑动门的基础。

2.2 CSS样式

下面是这次实现方案的CSS样式代码:

.tab {
  position: relative;
}

.tab-list {
  list-style-type: none;
  display: flex;
  margin: 0;
  padding: 0;
  border-radius: 6px;
  overflow: hidden;
}

.tab-list li {
  flex: 1;
  text-align: center;
  margin: 0;
  padding: 10px;
  cursor: pointer;
}

.tab-list li.active {
  background-color: #fff;
}

.slider {
  position: absolute;
  bottom: 0;
  left: 0;
  height: 5px;
  background-color: #007aff;
  transition: all .3s ease-in-out;
}

.tab-list li:nth-child(1):hover ~ .slider {
  transform: translateX(0);
}

.tab-list li:nth-child(2):hover ~ .slider {
  transform: translateX(100%);
}

.tab-list li:nth-child(3):hover ~ .slider {
  transform: translateX(200%);
}

.tab-content {
  position: absolute;
  top: 50px;
  left: 0;
  right: 0;
  padding: 10px;
  border: 1px solid #ccc;
  border-top: none;
  border-radius: 0 6px 6px 6px;
  background-color: #fff;
}

本次方案相较于第一个方案相对简单,我们只是在实现圆角边框TAB选项卡滑动门的基础上,再添加了一个滑动门的效果。

.slider类用于定义滑动门的样式,我们通过绝对定位将其定位在选项卡标签栏下方,并设定一个高度和背景颜色。而在.tab-list li:nth-child(1):hover ~ .slider等 CSS选择器中,我们设定鼠标hover某个选项卡标签时,滑动门会根据当前激活的选项卡进行相应的动画效果。

2.3 JavaScript代码

同样的,在这个方案中,我们需要添加一些JavaScript代码以使选项卡可以切换。以下为代码:

let tabs = document.querySelectorAll('.tab-list li');
let contents = document.querySelectorAll('.tab-content');

tabs.forEach((tab, index) => {
  tab.addEventListener('click', () => {
    tabs.forEach((otherTab) => {
      otherTab.classList.remove('active');
    });
    tab.classList.add('active');

    let slider = document.querySelector('.slider');
    slider.style.transform = `translateX(${index * 100}%)`;

    contents.forEach((content) => {
      content.style.display = 'none';
    });
    contents[index].style.display = 'block';
  });
});

本次JavaScript代码与第一个方案中的代码类似,只是多了一个滑动门部分的代码,根据当前激活的选项卡改变滑动门的位置。

至此,我们已经成功实现了这个圆角边框TAB选项卡滑动门的效果。两个实现方案代码不同,可以根据自己的实际需求进行选择使用。

示例说明:

下面是两个示例网页实现了以上代码:

方案1示例网页:https://codepen.io/Grace-zhangxo/pen/oNwQYqJ

方案2示例网页:https://codepen.io/Grace-zhangxo/pen/qBRqqBX

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js+css实现的圆角边框TAB选项卡滑动门代码分享(2款) - Python技术站

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

相关文章

  • vue移动端html5页面根据屏幕适配的四种解决方法

    下面是“vue移动端html5页面根据屏幕适配的四种解决方法”的完整攻略。 1. 常规解决方案 步骤说明 使用<meta>设置视口宽度,例如:<meta name=”viewport” content=”width=device-width,initial-scale=1.0″> 使用媒体查询(@media)设置样式,例如:@medi…

    css 2023年6月10日
    00
  • JavaScript实现小程序图片裁剪功能的示例代码

    下面就为您详细讲解如何使用JavaScript实现小程序图片裁剪功能的示例代码,包括代码的编写、调试和运行。 准备工作 在开始编写代码之前,您需要先下载并安装一款代码编辑器,比如Visual Studio Code。另外,您还需要掌握HTML、CSS和JavaScript的基本知识。 编写HTML代码 首先,我们需要创建一个HTML文件,用来显示裁剪后的图片…

    css 2023年6月10日
    00
  • CSS3中使用RGBa来调节透明度的教程

    下面是详细的攻略: CSS3中使用RGBa来调节透明度的教程 CSS3中可以使用RGBa来调节颜色的透明度。RGBa中的a指的是alpha值,取值范围为0-1之间。alpha值为0时为完全透明,为1时为完全不透明。下面是使用RGBa的方法: 步骤一:使用RGBa的语法 RGBa的语法和普通的RGB语法类似,只是在最后一个参数处加上了alpha值,如下所示: …

    css 2023年6月9日
    00
  • 浅谈网页基本性能优化规则小结

    下面详细讲解“浅谈网页基本性能优化规则小结”的完整攻略。 一、优化目标 在进行网页性能优化时,我们需要达到以下优化目标: 减少页面的加载时间。 减少HTTP请求的个数。 减少页面的大小。 提高页面响应速度。 二、基本优化规则 1. HTML优化 代码精简,删除不必要的空格、注释和格式化代码,减小文件大小。 将JS代码放到页面底部,将CSS放到页面头部。 使用…

    css 2023年6月10日
    00
  • CSS 3D转换

    CSS 3D转换是一种通过CSS来实现立体效果的技术,它可以实现物体在浏览器内的三维展示,并可以进行旋转、平移、缩放等操作。下面是CSS 3D转换的完整攻略和代码示例。 3D转换的基本属性 3D转换的基本属性包括transform、transform-style、perspective和perspective-origin。 transform:用于定义对象…

    Web开发基础 2023年3月30日
    00
  • 教你使用html+css制作一个3D立体相册

    关于“教你使用HTML+CSS制作一个3D立体相册”的攻略,我将按照以下步骤来详细讲解: 1.准备工作 在开始制作之前,需要准备一下工具和素材: 编辑器:推荐使用Visual Studio Code等现代化编辑器 图片素材:可以在网上找到或自己设计相关图片 心态:这是需要花费时间和耐心的过程,并且在制作过程中可能会出现一些Bug,请保持冷静并且寻求解决方案。…

    css 2023年6月10日
    00
  • 解决flex布局space-between最后一行左对齐的方法

    接下来我将详细讲解“解决flex布局space-between最后一行左对齐的方法”的完整攻略。 背景 在使用flex布局的时候,我们会经常用到justify-content: space-between属性来实现各个项目之间的等间距分布。但是,当最后一行的项目数量不足以填满一行时,我们可能会发现最后一行的项目是右对齐的,而不是左对齐的,这时我们需要一些技巧…

    css 2023年6月10日
    00
  • 深入挖掘Windows脚本技术

    深入挖掘Windows脚本技术攻略 背景介绍 Windows脚本技术是一项非常重要的技能,可以用于进行Windows管理任务和自动化,包括管理操作系统、配置网络和管理安全等方面。在本攻略中,我们将深入探讨Windows脚本技术的核心内容,并提供一些示例来帮助您掌握这些技能。 基础知识 在开始深入挖掘Windows脚本技术之前,需要掌握一些基本技能,如: Wi…

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