当前位置: 首页 > 图文教程 > 网页制作 > CSS样式表 > CSS+DIV制作梯形状的不规则网站导航

CSS样式表
未知长宽元素在已知300px*300px的容器中垂直居中(IE6/7/8/FF)
CSS dashed和dotted的区别
css 超过宽度的文字显示点点
不同浏览器对CSS3和HTML5的支持状况
使用DIV+CSS布局网站的优点和缺陷分析
CSS样式表中的position属性详细说明
css 圆角边框
CSS 网页布局问题 li上多出的margin问题
为什么有些css样式不起作用
tab选项卡布局之利用a的一个选项形式
UL、LI 无序列表实现纯CSS网站导航菜单
在IE下,当margin:0 auto;无法使得块级元素水平居中时
IE bug input 外层浮动的边距问题
重置浏览器默认样式
两种跨浏览器的自适应高的css代码
纯CSS无hacks的跨游览器自适应高度多列布局 推荐
IE中伪类hover的使用及BUG
img与容器下边界的空隙(缝隙) 的解决方法
CSS入门篇之传智播客学习
CSS3 倾斜的网页图片库实例教程

CSS样式表 中的 CSS+DIV制作梯形状的不规则网站导航


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 202 ::
收藏到网摘: n/a

前段时间做一个小项目碰到了一个导航制作的方式然后突然想到曾经很久以前看到的梯形状的不规则导航,就尝试做了一下。结果碰到了几个问题,后来在同事的提醒下总算完成了,记录一下也跟大家分享分享。

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


效果展示

运行代码框

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

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来触发

以上内容或许讲得不是非常明白,不过大家可以仔细分析一下源码,然后交流一下。如果觉得好也请不要回帖说顶,收藏,谢谢之类的话,你们的点击就是对我的支持了。