0%

纯CSS实现可折叠树状菜单

上一篇文章通过CSS模拟了自定义下拉列表select样式,这里介绍的CSS实现可折叠树状菜单原理也类似。

原理

利用checkbox的checked值判断是否展开下级菜单。当未点击上级菜单,即checkbox未选中时,ol设置display:none隐藏;当点击上级菜单,checkbox选中,通过:checked伪类让ol展现出来。

效果

效果

代码

HTML结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<div class="tree-container">
<ol>
<li>
<div class="node-container">
<input type="checkbox" id="tree-node1" name="">
<label for="tree-node1">文件一</label>
<ol>
<li>
<div class="node-container">
<input type="checkbox" id="tree-node3" name="">
<label for="tree-node3">文件3</label>
<ol>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
</ol>
</div>
</li>
<li><a href="#">1</a></li>
<li><a href="#">1</a></li>
</ol>
</div>
</li>
</ol>
</div>

想要增加级数只需要在li中插入node-container类及其子元素:

1
2
3
4
5
6
7
8
9
<div class="node-container">
<input type="checkbox" id="tree-node3" name="">
<label for="tree-node3">文件3</label>
<ol>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
</ol>
</div>

兼容性

经测试兼容 IE10 、chrome 和现代移动浏览器。

DEMO

预览地址
代码地址

参考

纯CSS打造可折叠树状菜单 - CSDN
树形菜单(纯CSS)