昨天爱友拿回来一个菜单代码,不知道是怎么实现的,我也不太清楚,后来施伟讲解了一下,还学会了二个知识点,记录一下,呵呵。
代码如下:
实现的原理如下:
定义一个id为nav的ul,他下面有一级和二级菜单。
二级菜单默认是隐藏的。因为他的样式是
#nav li ul {
line-height: 27px; list-style-type: none;text-align:left;
left: -999em; width: 150px; position: absolute;
}
关键就在于这个left:-999em和position:absolute,因为把他置为绝对的-999个字符长度后,他就不在父节点的所见范围内了,所以就看不到了。当鼠标指上去的时候,用js把li的样式后加了另一个样式sfhover,即
#nav li.sfhover ul {
left: auto;
}
这个样式中把left置为了auto,就表示显示在原地方,这样就能看到了,这里还做了浏览器的兼容。因为IE不支持
#nav li:hover ul {
left: auto;
}这样的语法,只有用js给加上onmouseover等事件了。其实在firefox中是不需要那段js代码的。
至于二级菜单的指上去变红色的效果则纯是css写的。秘密如下:
#nav li ul a:link {
color:#666; text-decoration:none;
}
#nav li ul a:visited {
color:#666;text-decoration:none;
}
#nav li ul a:hover {
color:#F3F3F3;text-decoration:none;font-weight:normal;
background:#C00;
}
link表示一个链接a在页面上显示的样式,visited表示链接访问后的样式,hover表示指上去后的样式,这里的hover是IE唯一一个支持的这种写法。还有一个虚选择器active,表示激活后的样式。注意,a的这四个虚选择器是有顺序的,必须按lvha这个顺序写才会有效,可以记为love与hate,喜欢和讨厌,好记吧,呵呵。
posted on 2007-07-27 14:54
小祝 阅读(270)
评论(3) 编辑 收藏 所属分类:
CSS