css弧边选项卡的项目实践

那么首先我们需要明确实现css弧边选项卡需要哪些CSS属性和方法。实现过程大致分为以下几个步骤:

  1. 创建选项卡的HTML结构。
  2. 定义选项卡选项的样式。
  3. 定义选中选项卡的样式。
  4. 定义弧边的样式。
  5. 定义选项卡内容的样式。
  6. 添加JavaScript事件,使得点击选项卡能切换到对应的内容。

下面我将详细讲解这几个步骤:

1. 创建选项卡的HTML结构

首先我们需要创建一个选项卡的HTML结构,一个基本的选项卡通常包含以下几个部分:

<div class="tab-container">
  <nav class="tab-nav">
    <ul>
      <li class="active"><a href="#">选项卡1</a></li>
      <li><a href="#">选项卡2</a></li>
      <li><a href="#">选项卡3</a></li>
    </ul>
  </nav>
  <div class="tab-content">
    <div class="active">选项卡1的内容</div>
    <div>选项卡2的内容</div>
    <div>选项卡3的内容</div>
  </div>
</div>

这里我们使用了一个nav元素来包含选项卡的选项,一个div元素来包含选项卡的内容。每个选项和对应的内容都需要一个CSS类名来进行控制。

2. 定义选项卡选项的样式

我们需要为选项卡选项定义一些基本样式,比如字体大小、颜色、背景等。同时,我们也需要为鼠标悬浮在选项卡选项上的样式进行定义。下面是一个基本的选项卡选项的样式:

.tab-nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: table;
  width: 100%;
}

.tab-nav li {
  display: table-cell;
  width: 33%;
  text-align: center;
  position: relative;
  padding: 0.6rem 1rem;
  border-bottom: 5px solid transparent;
  transition: background-color 0.3s ease-in-out;
}

.tab-nav li:hover, .tab-nav li.active {
  background-color: #0f0f0f;
  color: #fff;
  border-bottom-color: #3DC9DA;
  z-index:1;
}

.tab-nav li::after {
  content:"";
  position:absolute;
  bottom:0;
  left:0;
  right:0;
  height:5px;
  background-color:#ffffff;
  border-radius:30px 30px 0 0;
  opacity:0;
  transform:scaleX(0);
  transition:all 0.2s cubic-bezier(0.25,0.46,0.45,0.94)
}
.tab-nav li:hover::after, .tab-nav li.active::after {
  opacity:1;
  transform:scaleX(1)
}

上面的CSS代码中,我们定义了UL、LI的样式,使其居中、等分、背景颜色和文字颜色的控制。我们也添加了一个CSS伪类::after用于创建弧边圆角。

3. 定义选中选项卡的样式

当选中某个选项卡时,要有一个视觉上的反馈,我们需要为选中选项卡的样式进行定义。下面是一个基本的选中选项卡的样式:

.tab-nav li.active {
  background-color: #0f0f0f;
  color: #fff;
  border-bottom-color: #3DC9DA;
}

4. 定义弧边的样式

为选项卡选项的下方添加一个弧边效果,需要使用CSS伪类::after来创建圆角效果。下面是一个基本的弧边样式:

.tab-nav li::after {
  content:"";
  position:absolute;
  bottom:0;
  left:0;
  right:0;
  height:5px;
  background-color:#ffffff;
  border-radius:30px 30px 0 0;
  opacity:0;
  transform:scaleX(0);
  transition:all 0.2s cubic-bezier(0.25,0.46,0.45,0.94)
}

.tab-nav li:hover::after, .tab-nav li.active::after {
  opacity:1;
  transform:scaleX(1)
}

上面的CSS代码中,我们使用了border-radius属性定义伪元素的圆角。

5. 定义选项卡内容的样式

最后,我们需要为选项卡内容定义一些基本样式,比如字体、字号、颜色、背景等。下面是一个基本的选项卡内容的样式:

.tab-container .tab-content {
  padding: 1rem;
  background-color: #fff;
  font-size: 1.2rem;
}

.tab-container .tab-content>div {
  display: none;
}

.tab-container .tab-content .active {
  display: block;
}

上面的CSS代码中,我们定义了.tab-content.tab-content>div的样式,使其居中、隐藏、字大小和内容绑定。

6. 添加事件,实现选项卡内容的切换

最后,我们需要使用JavaScript代码为选项卡添加事件,实现切换选项卡内容的功能,下面是一个基本的JavaScript代码:

const tabs = document.querySelectorAll(".tab-nav li");

tabs.forEach(tab => {
  tab.addEventListener("click", () => {
    tabs.forEach(tab => tab.classList.remove("active"));
    tab.classList.add("active");
    const target = document.querySelector(tab.dataset.target);
    const tabContents = document.querySelectorAll(".tab-content > div");
    tabContents.forEach(tabContent =>
      tabContent.classList.remove("active")
    );
    target.classList.add("active");
  });
});

上面的JavaScript代码中,我们使用了addEventlistener()方法,为所有选项卡添加点击事件。当点击某个选项卡时,我们使用classList来添加和删除相应的CSS类名,来切换选项卡内容。

至此,一个基本的CSS弧边选项卡就实现了,我们可以更改CSS的属性和内容,来自定义自己的弧边选项卡样式。

下面介绍两个示例:

示例1:带图标的选项卡

<div class="tab-container">
  <nav class="tab-nav">
    <ul>
      <li class="active" data-target="#tab-1">
        <i class="fa fa-home" aria-hidden="true"></i>选项卡1
      </li>
      <li data-target="#tab-2">
        <i class="fa fa-user" aria-hidden="true"></i>选项卡2
      </li>
      <li data-target="#tab-3">
        <i class="fa fa-cog" aria-hidden="true"></i>选项卡3
      </li>
    </ul>
  </nav>
  <div class="tab-content">
    <div class="active" id="tab-1">
      选项卡1的内容
    </div>
    <div id="tab-2">
      选项卡2的内容
    </div>
    <div id="tab-3">
      选项卡3的内容
    </div>
  </div>
</div>
.tab-nav li i {
  margin-right: 5px;
}

示例2:带背景图的选项卡

<div class="tab-container">
  <nav class="tab-nav">
    <ul>
      <li class="active" data-target="#tab-1"></li>
      <li data-target="#tab-2"></li>
      <li data-target="#tab-3"></li>
    </ul>
  </nav>
  <div class="tab-content">
    <div class="active" id="tab-1">
      <img src="images/tab-1.jpg" alt="选项卡1的内容">
    </div>
    <div id="tab-2">
      <img src="images/tab-2.jpg" alt="选项卡2的内容">
    </div>
    <div id="tab-3">
      <img src="images/tab-3.jpg" alt="选项卡3的内容">
    </div>
  </div>
</div>
.tab-nav li {
  background-image: url(images/tab-bg.jpg);
  background-size: cover;
  background-position: center;
  position: relative;
}

以上就是基本的CSS弧边选项卡的实践过程和示例,希望可以对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:css弧边选项卡的项目实践 - Python技术站

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

相关文章

  • js实现带圆角的多级下拉菜单效果

    要实现带圆角的多级下拉菜单效果,需要使用HTML、CSS和JavaScript技术。 HTML部分 首先,在HTML中创建ul和li元素,代表菜单和菜单项。每个菜单项li需要设置一个唯一的id,同时在li中添加一个包含菜单项文本的a元素。同时,为了便于样式控制和避免全局污染,还可以给每个菜单一个独特的class。 CSS部分 菜单的样式设定需要涉及到多个方面…

    css 2023年6月10日
    00
  • 如何基于viewport vm适配移动端页面

    下面为您详细讲解如何基于viewport和vm适配移动端页面: 步骤一:设置viewport 在移动端开发中,要实现页面的适配,首要的一步是要设置viewport。 <meta name="viewport" content="width=device-width, initial-scale=1.0"> …

    css 2023年6月9日
    00
  • CSS滤镜实现的颜色渐变翻转效果

    你好,下面是“CSS滤镜实现的颜色渐变翻转效果”的完整攻略。 概述 “CSS滤镜实现的颜色渐变翻转效果”是一种实现在鼠标悬停时,元素的颜色会发生渐变且翻转的效果,这种效果可以用CSS的滤镜属性来实现。本攻略将介绍如何利用CSS滤镜属性来实现颜色渐变翻转效果。 步骤 第一步:制作需要翻转的元素 这个步骤很简单,我们可以用一个div元素来制作需要翻转的元素。例如…

    css 2023年6月9日
    00
  • css为什么要放在head标签中

    CSS(层叠样式表)是一种用于描述HTML元素如何被显示的语言。在HTML文档中,CSS可以被放置在HTML页面中的三个位置: 标签内、标签内或者外部的CSS文件中。然而,通常情况下我们把CSS样式表放在标签中,以下是CSS放在标签中的几个好处: 1. 加载顺序 浏览器在加载网页时会从上到下逐行解析HTML文档,因此如果我们把CSS放在标签内,浏览器会先加载…

    css 2023年6月11日
    00
  • js实现瀑布流的三种方式比较

    下面我将详细讲解“js实现瀑布流的三种方式比较”的完整攻略。 什么是瀑布流布局 瀑布流布局是一种常见的网页布局方式,主要特点是把内容块按照一定的规则摆放在页面上,使页面看起来像瀑布流一般自然流畅。 三种实现瀑布流的方式 第一种:通过CSS实现瀑布流 这种方式利用CSS3的column属性实现布局。首先将要布局的元素放进一个容器中,并将容器的column-co…

    css 2023年6月10日
    00
  • css属性行高line-height的用法详解

    让我来详细讲解一下“CSS属性行高line-height的用法详解”。 什么是行高line-height? 行高(line-height)是CSS属性之一,是指一行文字内容所占的高度,包括文字的高度和行中间(顶部)空隙的高度。 行高line-height的取值方式 行高可以使用百分数、像素或其他单位进行定义。行高的默认值通常为“normal”,根据用户代理(…

    css 2023年6月10日
    00
  • jQuery中事件与动画的总结分享

    来为大家详细讲解“jQuery中事件与动画的总结分享”的完整攻略。 前言 在前端开发中,常常需要使用到 jQuery 来制作动态交互效果。而 jQuery 中的事件与动画则是制作动态交互效果的重要组成部分。因此,了解 jQuery 中事件与动画的基本用法及其应用场景就显得尤为重要了。 事件 绑定事件 我们可以使用 jQuery 的 on() 方法来为 HTM…

    css 2023年6月9日
    00
  • Ajax实现表格中信息不刷新页面进行更新数据

    下面是关于“Ajax实现表格中信息不刷新页面进行更新数据”的完整攻略: 1. 简介 Ajax (Asynchronous JavaScript and XML) 可以让我们在不刷新页面的情况下,向服务器发送请求并在页面上显示更新的数据。这样可以增加用户的交互性和体验,提高网站的性能。 当表格数据需要更新而不希望出现页面的刷新时,我们可以通过Ajax来实现这一…

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