当前位置:首页 > CSS

css制作tab菜单

2026-02-26 23:28:22CSS

使用纯CSS制作Tab菜单

通过CSS的:target伪类或:checked伪类结合相邻兄弟选择器,可以实现无JavaScript的Tab切换效果。以下是两种常见实现方式:

方法一:基于:target伪类

HTML结构:

<div class="tab-container">
  <nav class="tab-nav">
    <a href="#tab1">Tab 1</a>
    <a href="#tab2">Tab 2</a>
  </nav>
  <div class="tab-content">
    <div id="tab1">Content 1</div>
    <div id="tab2">Content 2</div>
  </div>
</div>

CSS样式:

css制作tab菜单

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

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

.tab-nav a {
  padding: 10px 15px;
  background: #f0f0f0;
  text-decoration: none;
  color: #333;
}

.tab-nav a:hover {
  background: #e0e0e0;
}

方法二:基于radio input

HTML结构:

<div class="tab-container">
  <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>

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

CSS样式:

css制作tab菜单

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

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

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

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

添加动画效果

可以为Tab切换添加过渡动画:

.tab-content > div {
  opacity: 0;
  height: 0;
  overflow: hidden;
  transition: opacity 0.3s ease;
}

.tab-content > div:target {
  opacity: 1;
  height: auto;
}

响应式设计建议

针对移动设备可以调整布局:

@media (max-width: 600px) {
  .tab-nav {
    display: flex;
    flex-direction: column;
  }

  label {
    width: 100%;
    text-align: center;
  }
}

样式增强技巧

添加选中状态指示器:

.tab-nav a.active,
input[type="radio"]:checked + label {
  background: #4CAF50;
  color: white;
  position: relative;
}

input[type="radio"]:checked + label::after {
  content: "";
  position: absolute;
  bottom: -5px;
  left: 50%;
  transform: translateX(-50%);
  width: 0;
  height: 0;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-bottom: 5px solid #4CAF50;
}

这些方法均无需JavaScript即可实现完整功能,适合需要轻量级解决方案的场景。根据项目需求选择合适的方法,:target方案更简洁但会修改URL哈希,radio方案更灵活但需要更多HTML结构。

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

相关文章

vue菜单tab实现

vue菜单tab实现

实现Vue菜单Tab的步骤 在Vue中实现菜单Tab功能,可以通过动态组件或条件渲染来实现。以下是几种常见的方法: 使用动态组件 动态组件允许根据当前选中的Tab动态切换显示内容。定义一个组件数组…

css导航条制作

css导航条制作

基础导航条制作 使用HTML的无序列表<ul>和CSS的display: flex属性可以快速创建横向导航条。HTML结构通常包含导航链接列表,CSS负责样式和布局。 <nav&g…

css字体制作

css字体制作

CSS字体设置基础 在CSS中设置字体主要通过font-family属性实现,可以指定多个字体作为备选。系统会优先使用第一个可用字体。 body { font-family: "Helvetic…

css制作圆

css制作圆

使用CSS制作圆形元素 通过CSS的border-radius属性可以轻松将元素变为圆形。以下是具体实现方法: 基本圆形实现 .circle { width: 100px; height:…

css右导航栏制作

css右导航栏制作

CSS右导航栏制作方法 固定定位法 使用position: fixed将导航栏固定在视窗右侧,结合right和top属性控制位置。示例代码: .right-navbar { position:…

css尾部制作

css尾部制作

如何制作CSS尾部(页脚) 固定定位法 将页脚固定在页面底部,无论内容多少。使用position: fixed结合bottom: 0实现: footer { position: fixed;…