当前位置:首页 > 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. 响应式设计:

    @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方法则提供了更灵活的布局选项。

css 制作tab页

标签: csstab
分享给朋友:

相关文章

css 制作按钮

css 制作按钮

基础按钮样式 使用CSS创建一个基础按钮需要定义padding、background-color、border和border-radius等属性。以下是一个简单示例: .button { pa…

css样式制作

css样式制作

CSS 样式制作基础 CSS(层叠样式表)用于控制网页的视觉呈现。通过选择器和属性组合,可以精确调整元素的布局、颜色、字体等样式。 选择器类型 元素选择器:p { color: red; }…

css sprites制作

css sprites制作

什么是CSS Sprites CSS Sprites是一种将多个小图片合并成一张大图的技术,通过background-position属性来显示需要的部分。这种技术可以减少HTTP请求次数,提升页面加…

css怎么制作三角形

css怎么制作三角形

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

css表头制作

css表头制作

CSS 表头制作方法 固定表头(滚动时保持可见) 使用 position: sticky 属性可以创建滚动时固定的表头。确保父容器有明确的高度和 overflow 属性。 .table-conta…

css 制作箭头

css 制作箭头

使用 CSS 边框制作箭头 通过调整元素的边框宽度和颜色,利用透明边框的特性可以创建箭头效果。例如,制作一个向右的箭头: .arrow-right { width: 0; height:…