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

网页制作Webjx文章简介:纯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拥有的样式。

查看DEMO

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

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

总结:

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索input
, css3
, 菜单
, checked
, px
, css3 0
, 烽烟ol
, ol
, 树状
, js控制li显示隐藏
, 无限树状列表
无限折叠菜单
ie8 checked伪类、checked伪类、css伪类checked兼容ie、css3伪类选择器、css3伪类,以便于您获取更多的相关知识。

时间: 2024-12-11 20:57:21

利用CSS3的checked伪类实现OL的隐藏显示的相关文章

CSS3实例解析:伪类前的冒号和两个冒号的区别

网页制作Webjx文章简介:在一次项目中,有一次要用到::selection伪元素,然后开发同学问我,CSS中一个冒号和两个冒号有神马区别? 在一次项目中,有一次要用到::selection伪元素,然后开发同学问我,CSS中一个冒号和两个冒号有神马区别? 这好像真的是个问题,或许很多前端同学对此都有疑惑,查了些资料,证实了下两个符号的区别,简而言之:单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素. W3C关于CSS3选择器的规范中有一段描述: A pseudo-element i

CSS中一些利用伪类、伪元素和相邻元素选择器的技巧

前几天遇到一个页面需求是这样的: 一个评论框,后面的按钮有点赞或者发送评论两种状态,其中发送按钮有根据输入框中是否有字分为可点击和不可点击两种状态. 需求: 没有文字,没有聚焦--点赞 没有文字,聚焦--灰色发送 有文字--红色发送 如果用JS实现,需要监听输入框的change和focus事件,比较麻烦.但是用CSS中的伪类就可以实现相近效果. <input type="text" class="input" required>    <div c

图解css3:核心技术与案例实战. 2.5 目标伪类选择器

2.5 目标伪类选择器 目标伪类选择器":target"是众多实用的CSS3特性中的一个,用来匹配文档(页面)的URI中某个标志符的目标元素.具体来说,URI中的标志符通常会包含一个井号(#),后面带有一个标志符名称,例如"#contact"":target"就是用来匹配ID为"contact"的元素的.换种说法,在Web页面中,一些URL拥有片段标识符,它由一个井号(#)后跟一个锚点或元素ID组合而成,可以链接到页面的某个特

CSS3 target伪类简介

CSS3 target伪类是众多实用的CSS3特性中的一个.它用来匹配文档(页面)的URI中某个标志符的目标元素.具体来说,URI中的标志符通常会包含一个"#"字符,然后后面带有一个标志符名称,比如#respond,target就是用来匹配ID为respond的元素的. 现在在页面中,点击一个ID链接后,页面只会跳转到相应的位置,但是并不会有比较明显的UI标识,使用:target伪类可以像:hover等伪类一样对目标元素定义样式. 浏览器支持 因为我们在讨论CSS3,所以它现在被除了I

图解css3:核心技术与案例实战. 2.8 结构伪类选择器

2.8 结构伪类选择器 伪类可以将一段并不存在的HTML当作独立元素来定位,或是找到无法使用其他简单选择器就能定位到的切实存在的元素.因此CSS3给伪类选择器引入一种"结构伪类选择器".这种选择器可以根据元素在文档树中的某些特性(如相对位置)定位到它们.也就是说,通过文档树结构的相互关系来匹配特定的元素,从而减少HTML文档对ID或类名的定义,帮助你保持代码干净和整洁. 2.8.1 重温HTML的DOM树 所有的结构伪类都是基于HTML文档树的,也称做文档对象模型(DOM),下面简单回

谈谈一些有趣的CSS题目(十)-- 结构性伪类选择器

开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉到生僻的 CSS 属性,赶紧去补习一下吧. 不断更新,不断更新,不断更新,重要的事情说三遍. 谈谈一些有趣的CSS题目(一)-- 左边竖条的实现方法 谈谈一些有趣的CSS题目(二)-- 从条纹边框的实现谈盒子模型 谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少 谈谈一些有趣

利用CSS3实现文本框的清除按钮相关的一些效果

新技能传授-哔哔哔哔 search类型搜索框,设计师常常会设计一个叉叉图标,表示用户点之久可以清除输入的内容.比方说这个: 这是不错的体验! 当前现代浏览器中,Chrome浏览器下type=search的输入框会有清除按钮的动态呈现,不过搜索input框尺寸不太好控制(padding无视);FireFox浏览器貌似任何类型的输入框都无动于衷;IE10+浏览器貌似任何输入框都会出现清除按钮,但是长得略微粗糙了点,设计师同学接受不了. 貌似不和谐了,咋办?传授个新技能,借助HTML以及CSS,来模拟

《HTML 5与CSS 3权威指南(第3版·下册)》——19.4.3 E:read-only伪类选择器与E:read-write伪类选择器

19.4.3 E:read-only伪类选择器与E:read-write伪类选择器 q E: read-only伪类选择器用来指定当元素处于只读状态时的样式. q E: read-write伪类选择器用来指定当元素处于非只读状态时的样式. 在Firefox浏览器中,需要写成"-moz-read-only"或"-moz-read-write"的形式. 代码清单19-20为E: read-only选择器与E: read-write选择器结合使用的一个示例,在该示例中有一

图解css3:核心技术与案例实战. 2.7 UI元素状态伪类选择器

2.7 UI元素状态伪类选择器 UI元素状态伪类选择器也是CSS3选择器模块组中的一部分,主要用于form表单元素上,以提高网页的人机交互.操作逻辑以及页面的整体美观,使表单页面更具个性与品位,而且使用户操作页面表单更便利和简单. 2.7.1 UI元素状态伪类选择器语法 UI元素的状态一般包括:启用.禁用.选中.未选中.获得焦点.失去焦点.锁定和待机等.在HTML元素中有可用和不可用状态,例如表单中的文本输入框:HTML元素中还有选中和未选中状态,例如表单中的复选按钮和单选按钮.这几种状态都是C