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日

相关文章

  • CSS实现聊天气泡效果

    让我为您详细讲解如何使用CSS实现聊天气泡效果。 1. 基本思路 聊天气泡效果是一个非常常见的UI设计样式,它通常由两部分组成:聊天内容和气泡形状的容器。在CSS中,我们可以使用伪元素 :before 和 :after 来创建气泡形状的容器。然后再使用 border 属性来控制容器的边框,使用 background-color 属性来设置背景颜色,并使用 t…

    css 2023年6月9日
    00
  • CSS3的calc()做响应模式布局的实现方法

    CSS3的calc()函数可以非常方便地实现响应式布局。 什么是calc()函数 calc()函数是CSS3新增的一个函数,允许我们在样式中动态计算数值。它可以将基本的数学运算符(加、减、乘、除)与长度、百分比、视窗宽高等多种单位结合使用。 calc()的语法 calc()函数的语法如下: width: calc(expression); 其中,expres…

    css 2023年6月11日
    00
  • css3实现背景颜色渐变让图片不再是唯一的实现方式

    下面是详细讲解”CSS3实现背景颜色渐变让图片不再是唯一的实现方式” 的完整攻略: CSS3实现背景颜色渐变 在传统的网页设计中,我们常常使用图片展示美观的背景,但是使用图片实现背景需要加载图片,如果图片大小过大,会影响网页的加载速度和体验。而使用 CSS3 实现背景渐变是另外一种新的选择。CSS3 提供了一种线性渐变(linear-gradient),径向…

    css 2023年6月9日
    00
  • Pjblog模板制作教程 超强推荐

    当您想要给自己的网站使用Pjblog模板时,可以按照以下攻略进行制作: 确定模板风格和结构 首先,需要确定模板的风格和结构。可以根据自己的需要,在已有的模板基础上进行修改,或者全新设计一个模板,确定好后就需要开始裁剪模板了。 对模板文件进行裁剪 根据模板结构,需要裁剪出若干个文件,然后分别放到对应的目录下。关于文件的格式和使用方法,可以参考Pjblog文档中…

    css 2023年6月9日
    00
  • Vue中实现过渡动画效果示例代码

    首先需要明确一下Vue中过渡动画效果的实现方式。Vue提供了和两个组件,通过为这两个组件添加过渡样式类,就可以实现过渡动画效果。下面我将分别给出这两种组件的示例说明。 实现组件的过渡动画效果示例 代码结构 <template> <div> <button @click="isShow=!isShow">…

    css 2023年6月10日
    00
  • 详解使用CSS3的@media来编写响应式的页面

    下面是我对于使用CSS3的@media来编写响应式页面的详解攻略: 什么是响应式页面? 响应式页面是指能够在不同设备的屏幕尺寸下,自适应地展示最佳的页面效果,用户可以无论使用桌面电脑、笔记本、平板、手机等设备都能够方便地访问和使用网站。这种能够在不同尺寸设备上自适应的页面效果,需要通过CSS3中的@media规则进行控制。 @media规则的使用 在CSS3…

    css 2023年6月10日
    00
  • IE6,IE7和firefox对DIV的支持区别

    DIV是HTML标签中的容器元素,主要用于分割网页的各个区域。IE6、IE7和Firefox是网页浏览器,对DIV的支持有些差异,下面我将为大家详细讲解IE6,IE7和Firefox对DIV的支持区别。 支持CSS样式的差异 在IE6和IE7中,CSS样式的支持存在一定的缺陷。例如,对于一些CSS样式的渲染,IE6和IE7往往需要通过hack、特定的styl…

    css 2023年6月10日
    00
  • 教你如何在pycharm中使用less

    下面是详细讲解如何在PyCharm中使用Less: 准备工作 在使用PyCharm中使用Less之前,需要进行以下准备工作: 安装Less插件:在PyCharm的插件市场中搜索并安装Less插件,或者进入PyCharm设置 Settings > Plugins > Marketplace 中搜索安装。 配置文件编译:在PyCharm的设置中,配置…

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