用纯CSS打造可折叠树状菜单

 随着CSS3的发布,国外研究正如火如荼,但在国内还有很多人抱着IE不支持CSS3的想法,始终无动于衷不肯去学习。但是历史告诉我们,好的东西必将盛行,CSS3也终将也会替代CSS2,下面就和大家分享一个用CSS3打造的可折叠树状菜单。

树状菜单相信大家都不会陌生,我们一般用css+JS 的方式来实现。而css3的到来,让我们摆脱JS的束缚,直接运用CSS3的“选择器“就能实现可折叠树状菜单。

整体的代码很多,就不逐句逐句讲了,只把我觉得重要的地方提出来说说吧。

Html代码:

<li>
  <label for="subsubfolder1">下级</label>
  <input id="subsubfolder1" type="checkbox" />
  <ol>
<li class="file"><a>下级</a></li>
  <li>
  <label for="subsubfolder2">下级</label>
  <input id="subsubfolder2" type="checkbox" />
  <ol>
<li class="file"><a>无限级</a></li>
  <li class="file"><a>无限级</a></li>
  <li class="file"><a>无限级</a></li>
  <li class="file"><a>无限级</a></li>
  <li class="file"><a>无限级</a></li>
  <li class="file"><a>无限级</a></li>
  </ol>
  </li>
  </ol>
  </li>

实现的思路是运用checkbox的checked值来判断下级栏目是否展开,CSS3的选择器中提供了:checked 这个伪类,这个伪类提供我们,当元素拥有checked这个值的时候就执行你的CSS。(很强大是吧。有了CSS3我们会少写很多JS哦!)

<label for="subsubfolder1">下级</label>
  <input id="subsubfolder1" type="checkbox" />

当checkbox的拥有checked值的时候就就让OL现实出来,达到我们想要的功能。

接下来看看CSS代码吧:

li input {
  position:absolute;left:0;margin-left:0;opacity:0;z-index:2;cursor:pointer;height:1em;width:1em;top:0;
}
  input + ol {
  display:none;
}
  input + ol > li { 
height:0;overflow:hidden;margin-left:-14px!important;padding-left:1px; 
}
  li label {
  cursor:pointer;display:block;padding-left:17px;background:url(toggle-small-expand.png) no-repeat 0px 1px;
}
  input:checked + ol {
  background:url(toggle-small.png) 44px 5px no-repeat;margin:-22px 0 0 -44px;padding:27px 0 0 80px;height:auto;display:block;
}
  input:checked + ol > li {
height:auto;
}

这段代码是树状菜单的中心:

input:checked + ol {
  background: url(toggle-small.png) 44px 5px no-repeat;margin: -22px 0 0 -44px;padding:27px 0 0 80px;height: auto;display: block;
}

这个是讲当inoput 拥有了checked后它平级的OL拥有的样式。

使用IE9以下浏览就不用看了,请使用非IE浏览器。

(想让IE6+浏览器支持也是可以,但是需要加JS来模拟css3属性。国外有很多牛人都写了让IE6+浏览器支持部分CSS3的JS,例如PIE。)

总结:

总体来说,实现思路很简单,主要是利用CSS3的 checked 伪类来实现OL的隐藏显示。不过遗憾的是IE游览器不支持CSS3,但我们不能因为IE的不支持而放弃对CSS3的研究。在国外CSS3和HTML5都是前端很热门的话题,他们研究的东西远远超过我们,但国内真正去尝试的还是不多,对于一个前端开发人员来说是一件很可悲的事。我认为CSS3应该引起我们的重视,不能让我们输在起跑线。让我们大家一起来推动CSS3的发展吧。

时间: 2024-12-11 08:04:52

用纯CSS打造可折叠树状菜单的相关文章

用CSS打造可折叠伸缩名片菜单

css|菜单|伸缩 现看看其CSS样式表代码: <style type="text/css"><!--#menu {  font-size:12px;  height:380px;  margin:0;   padding:0;   width:180px;  overflow:hidden;   background:#f0f0f0;  list-style:none;  border-left:1px solid #cccccc;   border-right:1

dtree 网页树状菜单及传递对象集合到js内,动态生成节点_javascript技巧

在winform端,树状菜单是非常有用的,实现这个是非常便捷的,所以我想到在页面放入一个树状菜单的.我选择了dtree这个工具,网络上还有很多方法实现页面树状菜单的,不过我觉得这个比较好用的,而且配置比较简单,运用上上手很快.dtree是纯js的,所以不用导入jar包,并且配置只要在js内配置就好了.而且现在网络上有很多高手修改后的改良版,加了checkbox,更加方便.在开发过程中,最难的就是数据的交互的,因为dtree是纯js的,所以不存在和后台交互的方法,我的办法是先通过后台交互,将数据传

jQuery实现自定义右键菜单的树状菜单效果_jquery

本文实例讲述了jQuery实现自定义右键菜单的树状菜单效果.分享给大家供大家参考.具体如下: 这是一款基于jQuery的自定义右键菜单,在树状结构的子节点(下级没有节点)上单击右键才会弹出自定义菜单,而且菜单是自动根据鼠标位置来定位的.当鼠标在菜单以外的任意空白处单击一下后会自动消失.这里想特别说明一点所谓的"菜单以外",可以有两种解剖方式--1.除了鼠标在菜单区域内的所有位置:2.如下图所示的A.B.C.D四个区域.显然用第一种方法来剖析会更简单直接一点.源码中的!IsInArea就

基于Web标准的UI组件 — 树状菜单(2)_javascript技巧

从这篇开始,你需要拥有一些Javascript和DOM相关的知识才能顺利地学习下去.由于Javascript和DOM都不是三言两语可以说完的东西,如果你对它们还不熟悉,请先到这里学习一下再继续:Javascript在线教程(英文).DOM在线教程(英文). getElementsByClassName() 为了从一大堆HTML代码中找出我们的树状菜单(也许有多个),我们先来实现一个通过className找DOM节点的方法:getElementsByClassName.这是对浏览器自有DOM方法的

树状菜单的简单实现

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>树状菜单的简单实现</title> <script language="JavaScript" type="text/javascript"> <!-- function toggle(_dt){  va

三款javascript 树状菜单的简单实现方法

<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html> <head> <title>树状菜单的简单实现</title> <script language="网页特效" type="text/javascript"> <!-- function toggle(_dt){  var _dl=

纯CSS实现多级半透明效果菜单代码

 本文实例讲述了纯CSS实现多级半透明效果菜单代码.分享给大家供大家参考.具体如下: 这是一款基于CSS实现的多级半透明菜单,最多可支持5级的CSS菜单,菜单样式可自己调整,默认先是这种,兼容多种浏览器. 运行效果截图如下:   具体代码如下:   代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml2/DTD/xhtml1-strict.dt

图片-从数据库获取数据绑定到树状菜单

问题描述 从数据库获取数据绑定到树状菜单 我想问:这个树状菜单是那些代码获取数据的? 解决方案 你的第二张图片的showmenu()方法是获取数据的,发了一个请求,后台把数据返回到前台,data就是你的数据源 解决方案二: showMenu()方法中ajax异步获取数据成功后,用data拼接成zTree的节点参数的格式,作为zTree的初始化数据参数完成树形菜单绑定的. 就是下图的zNodes变量. zNodes树形插件的使用就简单的API,多看看官网使用例子,很容易掌握的.祝好!

树状菜单给角色赋权限-选中的树状菜单给角色赋予权限。求大神指教

问题描述 选中的树状菜单给角色赋予权限.求大神指教 解决方案 选中了给他个权限标记,存进数据库表就行了 解决方案二: 每个树节点,给一个id,根据id去数据库的权限表查询就可以了.