xhtml结构部分内容:
<ul> <li><a href="#" title="菜单">菜单</a></li> <li><a href="#" title="菜单">菜单</a></li> <li><a href="#" title="菜单">菜单</a></li> </ul>
css部分内容:
* {margin:0;padding:0;font:normal 12px/25px "宋体";} body {background:#f8f8f8;} ul {list-style:none;width:300px;height:25px;margin:20px auto;} li {float:left;width:86px;height:25px;text-align:center;margin:0 -5px;display:inline;} a {color:#fff; float:left;width:86px;height:25px;top:0;left:0;background:url(http://www.linxz.cn/blog2/attachments/month_0804/d200843194011.gif) center center no-repeat;} a:hover {color:#000;background:url(http://www.linxz.cn/blog2/attachments/month_0804/s200843194022.gif) 0 0 no-repeat;width:86px;position:relative;}
思路:
主要是利用当:hover触发的时候让a定位,出了li的浮动范围,出现梯形的图片。从而实现了不规则导航的菜单。
过程:
1、在浏览器中,根据li的结构表现,后面的li会覆盖住前面的li,如果宽度足够的话,是靠边在一起,那么只要利用负边距就可以实现初始状态下相互叠加的样式。margin:0 -5px ; 2、初始状态下的叠加实现了,要解决的就是:hover触发的时候,让 <a href="#" title="菜单">菜单</a> 这个放弃浮动使用定位。在这个过程中如果是要利用绝对定位话,会让有一个 z-index 的问题出现。 这个问题只体现在IE中,FF下是无问题的,可以正常显示。IE中表现出来的是最后一个li永远都会盖住前面的li,那么当鼠标经过的时候就无法完美显示了。
个人认为比较重要的几个属性:
- li中的负边距,实现叠加效果
- hover中的position:relative
- a是内联元素,要触发haslayout,可以使用float:left来触发
注:
以上内容或许讲得不是非常明白,不过大家可以仔细分析一下源码,然后交流一下。如果觉得好也请不要回帖说顶,收藏,谢谢之类的话,你们的点击就是对我的支持了。
经典论坛交流: http://bbs.blueidea.com/thread-2843421-1-1.html
本文链接:http://www.blueidea.com/tech/web/2008/5627.asp
出处:蓝色理想
责任编辑:bluehearts
上一页 xhtml+css制作不规则导航 [1] 下一页
◎进入论坛网页制作、WEB标准化版块参加讨论,我还想发表评论。
|