我们详细了解一下它是如何实现的。看下面的最终效果图:
首先我们看XHTML代码: <ul id="menu"> <li><a href="http://www.52css.com/">52CSS.com首页<span>52CSS.com首页</span></a></li> <li><a href="http://www.52css.com/">Div CSS教程<span>Div CSS教程</span></a></li> <li><a href="http://www.52css.com/">CSS布局实例<span>CSS布局实例</span></a></li> <li><a href="http://www.52css.com/">CSS2.0教程<span>CSS2.0教程</span></a></li> </ul>
我们定义了一个id为menu的无序列表作为菜单的容器,里面的列表项li就是我们的菜单栏了。我们在列表项li中的链接a标签内,放置了一个内联对象span,它就是阴影效果载体,我们通过CSS定义,实现阴影效果。 软件开发网 www.mscto.com 我们看下面的CSS代码: 软件开发网 www.mscto.cn #menu { padding:0; margin:0; height:2em; list-style-type:none; border-left:1px solid #bbb; } #menu li { float:left; width:8em; height:2em; line-height:2em; border-right:1px solid #bbb; position:relative; text-align:center; }
我们定义menu这个无序列表的填充与边距均为零。高度为2em。清除默认列表项预设标记。定义菜单中的列表项为向左浮动,宽度与高度分别是2em。行高为2em,实现了文字的垂直居中。设置相对定位,并设置文字水平居中对齐。 请注意:我们给ul设置了左边框为1px的实线,颜色是灰色。border-left:1px solid #bbb; 我们给li设置了右边框为1px的实绩,颜色是灰色。border-right:1px solid #bbb; 这样就实现了左右都存在分割的线条了,请看下面的图示(可点击放大)。
我们继续CSS代码的编写: #menu li a, #menu li a:visited { display:block; text-decoration:none; color:#000; } #menu li a span, #menu li a:visited span { display:none; }
我们定义链接的link与visited状态的样式,设置块元素,没有装饰线,颜色为#000;并且在link与visited状态下链接元素内的span元素为不可见:display:none。 #menu li a:hover { border:0; color:#bbb; } #menu li a:hover span { display:block; width:8em; height:2em; text-align:center; position:absolute; left:-1px; top:-2px; color:#000; cursor:pointer; }
在hover鼠标悬停时,链接的文字颜色为#bbb。即阴影文字的颜色。而此时span内联元素中的文字的设置发生了巨大的变化,我们来看代码。设置成块元素,宽度与高度分别是8em、2em。文字水平居中对齐,采用绝对定位,距左与距顶分别是-1px、-2px。文字颜色为黑色,鼠标指点为:pointer。 实现的原理与思路小结:在正常状态下,链接内的文字是黑色的,而链接span元素内的文字是不可见的。当鼠标悬停时。将链接文字设置为淡灰色的阴影,链接span元素内的文字设置成黑色,并且其位置向左及向上略移一点点。这样就实现了这款菜单的效果。 我们看完整的CSS代码: 软件开发网 www.mscto.com #menu { padding:0; margin:0; height:2em; list-style-type:none; border-left:1px solid #bbb; } #menu li { float:left; width:8em; height:2em; line-height:2em; border-right:1px solid #bbb; position:relative; text-align:center; } #menu li a, #menu li a:visited { display:block; text-decoration:none; color:#000; } #menu li a span, #menu li a:visited span { display:none; } #menu li a:hover { border:0; color:#bbb; } #menu li a:hover span { display:block; width:8em; height:2em; text-align:center; position:absolute; left:-1px; top:-2px; color:#000; cursor:pointer; }
|