当前位置:首页 > CSS

纯css制作tab菜单

2026-02-12 13:29:49CSS

纯CSS制作Tab菜单的方法

方法一:使用:target伪类

通过CSS的:target伪类选择器实现Tab切换效果,无需JavaScript。

HTML结构:

<div class="tabs">
  <div class="tab-links">
    <a href="#tab1">Tab 1</a>
    <a href="#tab2">Tab 2</a>
    <a href="#tab3">Tab 3</a>
  </div>
  <div class="tab-content">
    <div id="tab1">Content 1</div>
    <div id="tab2">Content 2</div>
    <div id="tab3">Content 3</div>
  </div>
</div>

CSS样式:

.tab-content > div {
  display: none;
  padding: 20px;
  border: 1px solid #ddd;
}

.tab-content > div:target {
  display: block;
}

.tab-links a {
  display: inline-block;
  padding: 10px 20px;
  background: #f1f1f1;
  text-decoration: none;
  color: #333;
}

.tab-links a:hover {
  background: #ddd;
}

方法二:使用radio input和:checked伪类

通过隐藏的radio input和:checked伪类实现更稳定的Tab切换。

纯css制作tab菜单

HTML结构:

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

  <input type="radio" name="tabs" id="tab2">
  <label for="tab2">Tab 2</label>

  <input type="radio" name="tabs" id="tab3">
  <label for="tab3">Tab 3</label>

  <div class="tab-content">
    <div class="tab-pane">Content 1</div>
    <div class="tab-pane">Content 2</div>
    <div class="tab-pane">Content 3</div>
  </div>
</div>

CSS样式:

纯css制作tab菜单

input[type="radio"] {
  display: none;
}

label {
  display: inline-block;
  padding: 10px 20px;
  background: #f1f1f1;
  cursor: pointer;
}

.tab-pane {
  display: none;
  padding: 20px;
  border: 1px solid #ddd;
}

#tab1:checked ~ .tab-content .tab-pane:nth-child(1),
#tab2:checked ~ .tab-content .tab-pane:nth-child(2),
#tab3:checked ~ .tab-content .tab-pane:nth-child(3) {
  display: block;
}

input[type="radio"]:checked + label {
  background: #ddd;
}

方法三:使用flexbox布局

结合flexbox布局创建响应式Tab菜单。

HTML结构:

<div class="tabs">
  <div class="tab-header">
    <div class="tab-link active" data-tab="tab1">Tab 1</div>
    <div class="tab-link" data-tab="tab2">Tab 2</div>
    <div class="tab-link" data-tab="tab3">Tab 3</div>
  </div>
  <div class="tab-content">
    <div class="tab-pane active" id="tab1">Content 1</div>
    <div class="tab-pane" id="tab2">Content 2</div>
    <div class="tab-pane" id="tab3">Content 3</div>
  </div>
</div>

CSS样式:

.tabs {
  display: flex;
  flex-direction: column;
}

.tab-header {
  display: flex;
  border-bottom: 1px solid #ddd;
}

.tab-link {
  padding: 10px 20px;
  cursor: pointer;
  background: #f1f1f1;
}

.tab-link.active {
  background: #ddd;
  border-bottom: 2px solid #333;
}

.tab-pane {
  display: none;
  padding: 20px;
}

.tab-pane.active {
  display: block;
}

注意事项

  • 方法一依赖URL哈希变化,可能影响浏览器历史记录
  • 方法二需要合理组织HTML结构,确保选择器能正确匹配
  • 方法三需要预先设置active类,无法实现动态切换
  • 所有方法都需要考虑响应式设计,确保在不同屏幕尺寸下正常显示

这些方法都可以实现纯CSS的Tab菜单功能,根据具体需求选择最适合的实现方式。

标签: 菜单css
分享给朋友:

相关文章

css如何制作圆

css如何制作圆

使用 border-radius 属性制作圆 通过设置 border-radius 属性为元素添加圆角效果。当 border-radius 的值等于元素宽度和高度的一半时,元素会呈现圆形。 .cir…

用css制作网页

用css制作网页

创建HTML文件结构 新建一个index.html文件,写入基础HTML5结构。通过<link>标签引入外部CSS文件,示例结构如下: <!DOCTYPE html> <…

css制作六边形

css制作六边形

使用CSS创建六边形的方法 通过CSS的clip-path属性可以轻松实现六边形效果。以下是一个基础示例: .hexagon { width: 100px; height: 55px;…

css制作角标

css制作角标

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

如何制作css雪碧图

如何制作css雪碧图

什么是CSS雪碧图 CSS雪碧图(CSS Sprite)是一种将多个小图标或背景图像合并到一张大图中的技术,通过CSS的background-position属性控制显示特定部分。这种技术可以减少HT…

简历制作css

简历制作css

简历制作CSS技巧 使用CSS美化简历可以提升视觉效果和专业性。以下是一些关键方法和代码示例: 基础样式设置 body { font-family: 'Arial', sans-serif;…