当前位置:首页 > CSS

css 制作tab页

2026-02-13 10:21:24CSS

使用纯CSS制作Tab页的方法

通过HTML和CSS可以实现无需JavaScript的Tab页切换效果。以下是几种常见的实现方式:

方法一:使用radio input和label

HTML结构:

<div class="tabs">
  <input type="radio" name="tab" id="tab1" checked>
  <label for="tab1">Tab 1</label>
  <div class="content">Content 1</div>

  <input type="radio" name="tab" id="tab2">
  <label for="tab2">Tab 2</label>
  <div class="content">Content 2</div>

  <input type="radio" name="tab" id="tab3">
  <label for="tab3">Tab 3</label>
  <div class="content">Content 3</div>
</div>

CSS样式:

.tabs {
  display: flex;
  flex-direction: column;
}
.tabs input[type="radio"] {
  display: none;
}
.tabs label {
  padding: 10px 20px;
  background: #eee;
  cursor: pointer;
  order: -1;
  margin-right: 5px;
}
.tabs input[type="radio"]:checked + label {
  background: #ddd;
  font-weight: bold;
}
.tabs .content {
  display: none;
  padding: 20px;
}
.tabs input[type="radio"]:checked + label + .content {
  display: block;
}

方法二:使用锚点和:target伪类

HTML结构:

<div class="tab-container">
  <nav class="tab-nav">
    <a href="#tab1">Tab 1</a>
    <a href="#tab2">Tab 2</a>
    <a href="#tab3">Tab 3</a>
  </nav>

  <div id="tab1" class="tab-content">Content 1</div>
  <div id="tab2" class="tab-content">Content 2</div>
  <div id="tab3" class="tab-content">Content 3</div>
</div>

CSS样式:

.tab-nav {
  display: flex;
  margin-bottom: 10px;
}
.tab-nav a {
  padding: 10px 20px;
  background: #eee;
  text-decoration: none;
  color: #333;
  margin-right: 5px;
}
.tab-nav a:hover {
  background: #ddd;
}
.tab-content {
  display: none;
  padding: 20px;
  border: 1px solid #ddd;
}
.tab-content:target {
  display: block;
}

方法三:使用checkbox和相邻兄弟选择器

HTML结构:

<div class="tabs">
  <label class="tab-label" for="tab1">Tab 1</label>
  <input type="checkbox" id="tab1" class="tab-switch" checked>
  <div class="tab-content">Content 1</div>

  <label class="tab-label" for="tab2">Tab 2</label>
  <input type="checkbox" id="tab2" class="tab-switch">
  <div class="tab-content">Content 2</div>

  <label class="tab-label" for="tab3">Tab 3</label>
  <input type="checkbox" id="tab3" class="tab-switch">
  <div class="tab-content">Content 3</div>
</div>

CSS样式:

.tabs {
  position: relative;
}
.tab-switch {
  display: none;
}
.tab-label {
  display: inline-block;
  padding: 10px 20px;
  background: #eee;
  cursor: pointer;
  margin-right: 5px;
}
.tab-content {
  display: none;
  position: absolute;
  left: 0;
  padding: 20px;
  border: 1px solid #ddd;
  width: 100%;
  box-sizing: border-box;
}
.tab-switch:checked ~ .tab-content {
  display: block;
}
.tab-switch:checked + .tab-label {
  background: #ddd;
  font-weight: bold;
}

样式优化建议

  1. 添加过渡效果使切换更平滑:

    .tab-content {
    transition: opacity 0.3s ease;
    opacity: 0;
    height: 0;
    overflow: hidden;
    }
    .tab-content:target, 
    .tabs input[type="radio"]:checked + label + .content,
    .tab-switch:checked ~ .tab-content {
    opacity: 1;
    height: auto;
    }
  2. 添加活动标签指示器:

    .tab-nav a.active {
    border-bottom: 3px solid #4285f4;
    }
  3. 响应式设计:

    css 制作tab页

    @media (max-width: 600px) {
    .tab-nav {
     flex-direction: column;
    }
    .tab-nav a {
     margin-right: 0;
     margin-bottom: 5px;
    }
    }

这些方法都利用了CSS的选择器和伪类来实现Tab页切换,无需JavaScript。根据项目需求选择最适合的实现方式,radio input方法适合简单的Tab切换,:target方法适合需要URL哈希变化的场景,checkbox方法则提供了更灵活的布局选项。

标签: csstab
分享给朋友:

相关文章

css怎么制作三角形

css怎么制作三角形

使用边框制作三角形 通过设置元素的边框宽度和颜色,可以创建不同方向的三角形。将元素的宽度和高度设为0,利用边框的透明属性实现。 .triangle-up { width: 0; he…

css制作角标

css制作角标

使用伪元素创建角标 通过CSS的伪元素(如::before或::after)可以轻松实现角标效果。以下是一个示例代码: .element { position: relative; disp…

如何制作css导航菜单

如何制作css导航菜单

创建基本HTML结构 导航菜单的基础是HTML结构。使用<nav>标签包裹无序列表<ul>,每个菜单项用<li>标签表示,链接用<a>标签。 <…

css网页制作教程

css网页制作教程

CSS网页制作基础教程 CSS(层叠样式表)用于控制网页的视觉表现,与HTML结合使用。以下为关键知识点和操作方法: HTML与CSS关联方式 内联样式:直接在HTML标签中使用style属性&l…

css表格制作表格

css表格制作表格

CSS 表格制作方法 基础表格结构 使用HTML的<table>标签创建表格框架,搭配<tr>(行)、<td>(单元格)和<th>(表头)标签: &l…

css 导航栏制作

css 导航栏制作

CSS 导航栏制作方法 水平导航栏 使用 display: inline-block 或 flexbox 创建水平导航栏。设置背景色、内边距和悬停效果增强交互性。 .navbar { back…