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日

相关文章

  • Jquery实战_读书笔记2 选择器

    Jquery实战_读书笔记2 选择器 1. 选择器简介 在使用Jquery进行DOM操作的时候,首先需要获取操作的元素,而选择器就是用来获取元素的工具。选择器可以根据不同的条件进行筛选,选择我们需要的元素。 Jquery中支持多种选择器:标签选择器、ID选择器、class选择器、属性选择器、伪类选择器、层次选择器等。 例如,我们可以使用ID选择器来选择页面中…

    css 2023年6月10日
    00
  • jQuery Pagination分页插件使用方法详解

    jQuery Pagination分页插件使用方法详解 简介 jQuery Pagination是一个可以创建分页效果的 jQuery 插件,用户可以设置分页的样式、每页显示数量、数据总条数等,非常方便实用。本文将详细介绍如何使用该插件。 安装 该插件可以通过以下两种方式进行安装: CDN 引入 在html文件中,你可以通过引入以下两条CDN来在项目中使用j…

    css 2023年6月9日
    00
  • css设置滚动条颜色与样式以及如何去掉与隐藏滚动条

    请看下面的详细讲解。 CSS设置滚动条颜色与样式 设置滚动条颜色 要设置滚动条的颜色,我们需要使用伪元素::-webkit-scrollbar,再用background-color属性设置滚动条的背景颜色,用thumb伪元素来设置滚动条的滑块颜色。 /* 设置滚动条的背景颜色 */ ::-webkit-scrollbar { background-color…

    css 2023年6月9日
    00
  • CSS教程:text-indent隐藏文字出现虚线框outline

    以下是关于“CSS教程:text-indent隐藏文字出现虚线框outline”的完整攻略: 1. 什么是text-indent及outline? 在CSS中,text-indent用于控制文本第一行的缩进,outline用于给指定元素添加边框。也就是说,如果文本的第一行被设置了缩进,并且当文本内容超出了元素框时,浏览器会自动添加虚线框。 2. 如何使用te…

    css 2023年6月10日
    00
  • CSS教程:网页中多个样式表顺序问题

    下面是针对“CSS教程:网页中多个样式表顺序问题”的完整攻略: 样式表顺序问题 在网页中,我们常常需要引用多个样式表来为网页添加不同的样式。然而,如果这些样式表之间存在冲突,那么就需要考虑样式表的顺序。以下是一些需要注意的情况: 1. 样式优先级 CSS 样式表中有一个优先级的概念,即某个样式的优先级高于其他样式时,该样式将被优先应用。样式的优先级由样式选择…

    css 2023年6月10日
    00
  • Javascript中Event属性搜集整理

    下面是关于“JavaScript中Event属性搜集整理”的攻略: 1. 什么是Event属性 Event属性是JavaScript中用于处理事件的一组属性。在Web开发中,我们可以使用这些属性来获取响应事件的细节信息,从而编写出更加智能、优雅的代码。Event属性可以分为两类:公共属性和私有属性。 2. 公共属性 公共属性是指在所有事件对象中都可以使用的属…

    css 2023年6月11日
    00
  • JavaScript新增样式规则(推荐)

    JavaScript新增样式规则是指通过JavaScript语言动态添加CSS样式规则到文档中,使得网页可以根据不同的用户行为动态地改变样式。我们可以使用StyleSheet.insertRule()方法来插入一条新的CSS规则到样式表中。 下面是完整的实现过程,包含以下几个步骤: 1. 获取样式表对象 首先,我们需要获取当前文档中的样式表对象。我们可以通过…

    css 2023年6月10日
    00
  • CSS属性探秘系列(七):z-index

    关于CSS属性探秘系列(七):z-index,以下是详细的攻略。 什么是z-index? z-index是CSS中控制元素在z轴上层叠顺序的属性。而z轴是3D空间中垂直于屏幕的一个轴,值越大,代表元素在层叠顺序中越靠近顶层。 如何使用z-index 相信很多人都遇到过一个问题:想把两个元素叠在一起,但是底下的元素(比如图片)总是遮挡着上面的元素(比如文本),…

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