利用CSS3的checked伪类实现OL的隐藏显示的方法


Posted in HTML / CSS onDecember 18, 2010

利用CSS3的checked伪类实现OL的隐藏显示的方法

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

直接上图:

利用CSS3的checked伪类实现OL的隐藏显示的方法
树状菜单相信大家都不会陌生,我们一般用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拥有的样式。

查看DEMO

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

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

总结:

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

HTML / CSS 相关文章推荐
纯CSS3实现表单验证效果(非常不错)
Jan 18 HTML / CSS
你应该知道的30个css选择器
Mar 19 HTML / CSS
CSS3实现swap交换动画
Jan 19 HTML / CSS
css3遮罩层镂空效果的多种实现方法
May 11 HTML / CSS
HTML5 canvas基本绘图之绘制矩形
Jun 27 HTML / CSS
Html5新标签解释及用法
Feb 17 HTML / CSS
HTML5 Web Workers之网站也能多线程的实现
Apr 24 HTML / CSS
HTML5中使用postMessage实现两个网页间传递数据
Jun 22 HTML / CSS
video实现有声音自动播放的实现方法
May 20 HTML / CSS
HTML5单选框、复选框、下拉菜单、文本域的实现代码
Dec 01 HTML / CSS
CSS 圆形进度栏
Apr 06 HTML / CSS
如何利用 CSS Overview 面板重构优化你的网站
Oct 24 HTML / CSS
CSS3实战第一波 让我们尽情的圆角吧
Aug 27 #HTML / CSS
彻底弄明白CSS3的Media Queries(跨平台设计)
Jul 27 #HTML / CSS
让IE6、IE7、IE8支持CSS3的脚本
Jul 20 #HTML / CSS
CSS3 伪类选择器 nth-child()说明
Jul 10 #HTML / CSS
css3 border-image使用说明
Jun 23 #HTML / CSS
HTML+CSS3 模仿Windows7 桌面效果
Jun 17 #HTML / CSS
基于css3仿造window7的开始菜单
Jun 17 #HTML / CSS
You might like
聊天室php&amp;mysql(一)
2006/10/09 PHP
PHP时间戳与日期之间转换的实例介绍
2013/04/19 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
2011/11/30 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
js 距离某一时间点时间是多少实现代码
2013/10/14 Javascript
获取非最后一列td值并将title设为该值的方法
2013/10/30 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
JS中prototype的用法实例分析
2015/03/19 Javascript
jqTransform美化表单
2015/10/10 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
使用javascript插入样式
2016/03/14 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
2018/01/25 jQuery
jquery分页优化操作实例分析
2019/08/23 jQuery
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
Element Dropdown下拉菜单的使用方法
2020/07/26 Javascript
Vue 的 v-model用法实例
2020/11/23 Vue.js
itchat接口使用示例
2017/10/23 Python
python爬虫获取多页天涯帖子
2018/02/23 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
Python3常用内置方法代码实例
2019/11/18 Python
Python imageio读取视频并进行编解码详解
2019/12/10 Python
Python 定义只读属性的实现方式
2020/03/05 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
python用opencv完成图像分割并进行目标物的提取
2020/05/25 Python
使用css3制作动感导航条示例
2014/01/26 HTML / CSS
法定代表人授权委托书
2014/04/04 职场文书
运动会加油口号
2014/06/07 职场文书
销售经理岗位职责
2015/01/31 职场文书
趣味运动会广播稿
2015/08/19 职场文书