当前位置:首页 > CSS

css制作树形菜单

2026-03-12 10:23:10CSS

使用HTML和CSS创建树形菜单

HTML结构采用嵌套的无序列表<ul>和列表项<li>,每个菜单项包含可点击的标签和子菜单容器。

<div class="tree-menu">
  <ul>
    <li>
      <label for="item1">菜单项1</label>
      <input type="checkbox" id="item1">
      <ul>
        <li>子项1</li>
        <li>子项2</li>
      </ul>
    </li>
    <li>
      <label for="item2">菜单项2</label>
      <input type="checkbox" id="item2">
      <ul>
        <li>子项3</li>
        <li>
          <label for="item3">子项4</label>
          <input type="checkbox" id="item3">
          <ul>
            <li>孙项1</li>
            <li>孙项2</li>
          </ul>
        </li>
      </ul>
    </li>
  </ul>
</div>

CSS样式设计

通过CSS控制树形菜单的显示效果,包括缩进、图标和交互状态。

.tree-menu ul {
  list-style: none;
  padding-left: 20px;
}

.tree-menu li {
  position: relative;
  margin: 5px 0;
}

.tree-menu input[type="checkbox"] {
  position: absolute;
  opacity: 0;
}

.tree-menu label {
  cursor: pointer;
  padding-left: 25px;
  position: relative;
}

.tree-menu label:before {
  content: "+";
  position: absolute;
  left: 0;
}

.tree-menu input[type="checkbox"]:checked ~ ul {
  display: none;
}

.tree-menu input[type="checkbox"]:checked + label:before {
  content: "-";
}

.tree-menu input[type="checkbox"]:checked ~ ul {
  display: block;
}

添加连接线和图标

增强视觉效果的样式调整,添加连接线和自定义图标。

.tree-menu ul {
  border-left: 1px dotted #ccc;
}

.tree-menu label:hover {
  color: #0066cc;
}

.tree-menu label:before {
  color: #666;
  font-weight: bold;
}

纯CSS实现方法

不使用JavaScript的替代方案,依赖CSS伪类和相邻选择器。

.tree-menu li > ul {
  display: none;
}

.tree-menu li.open > ul {
  display: block;
}

.tree-menu li > span:before {
  content: "▶";
  margin-right: 5px;
}

.tree-menu li.open > span:before {
  content: "▼";
}

响应式设计考虑

针对不同屏幕尺寸调整菜单样式。

@media (max-width: 768px) {
  .tree-menu ul {
    padding-left: 15px;
  }

  .tree-menu label {
    font-size: 14px;
  }
}

动画效果增强

为展开/折叠操作添加平滑过渡效果。

css制作树形菜单

.tree-menu ul {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.3s ease-out;
}

.tree-menu input[type="checkbox"]:checked ~ ul {
  max-height: 1000px;
}

这些方法提供了创建树形菜单的不同实现方式,可以根据项目需求选择最适合的方案。HTML结构保持简洁,CSS负责所有视觉表现和交互逻辑,确保无需JavaScript也能实现基本功能。

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

相关文章

css制作箭头

css制作箭头

使用 CSS 边框制作箭头 通过调整元素的 border 属性,利用透明边框和实色边框的组合生成箭头。例如,创建一个向右的箭头: .arrow-right { width: 0; hei…

css导航条制作

css导航条制作

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

如何制作css雪碧图

如何制作css雪碧图

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

咖啡店css制作

咖啡店css制作

咖啡店网页CSS设计要点 布局与配色 咖啡店网页通常采用温暖自然的配色方案,如棕色、米色、浅绿色等大地色系。主色调可选择咖啡色(#6F4E37)作为品牌色,搭配奶油色(#FFF8E8)作为背景。使用C…

css制作许愿墙六块

css制作许愿墙六块

CSS 制作许愿墙六块布局 使用 CSS 创建一个六块许愿墙布局可以通过多种方式实现,以下是两种常见的方法:使用 CSS Grid 或 Flexbox。以下代码示例展示了如何实现这两种布局。 方…

css导航条制作

css导航条制作

水平导航条制作 使用display: inline-block或flexbox布局创建水平导航条。设置背景色、内边距和悬停效果增强交互性。 <nav> <ul class="h…