首页 » 我的收集 » DIV+CSS » xhtml+css制作不规则导航

xhtml+css制作不规则导航

菜单效果:

先看图(图片只是大致做了一下)


代码展示

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
<html xmlns=”http://www.w3.org/1999/xhtml“>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<meta name=”author” content=”Linxz” />
<title>无标题文档</title>
<style type=”text/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(/articleimg/2008/04/5627/03.gif) center center no-repeat;}
a:hover {color:#000;background:url(/articleimg/2008/04/5627/02.gif) 0 0 no-repeat;width:86px;position:relative;}
</style>
</head>
<body>
<ul>
<li><a href=”#” title=”菜单”>菜单</a></li>
<li><a href=”#” title=”菜单”>菜单</a></li>
<li><a href=”#” title=”菜单”>菜单</a></li>
</ul>
</body>
</html>

 

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,那么当鼠标经过的时候就无法完美显示了。

个人认为比较重要的几个属性

  1. li中的负边距,实现叠加效果
  2. hover中的position:relative
  3. a是内联元素,要触发haslayout,可以使用float:left来触发

 

下载源码包

发表评论

电子邮件地址不会被公开。 必填项已用*标注

引用:0

下面所列的是引用到本博客的链接
xhtml+css制作不规则导航 来自 Design4U.cn
顶部