当前位置: 首页 > 图文教程 > 网页制作 > CSS样式表 > 如何用DIV+CSS制作横向菜单?

CSS样式表
CSS 表单元素不继承body的字体属性
网页制作学习教程 CSS Position
网页设计学习教程 CSS盒模型
vertical-align 表单元素垂直对齐的解决方法
不用Cookie的仿刷新二级高亮菜单
CSS3 优势以及网页设计师如何使用CSS3技术
CSS 网页制作 提高CSS可阅读性
CSS 样式表中引用图片地址在各浏览器中的差异
CSS Sprite优化 减少HTTP链接数
网页制作中应用的50个CSS技巧(国外)
CSS 英文教程 CSS语法
CSS 网页文字渐变效果
纯css 圆角实现代码
CSS 新的图像替换方法
不必需的样式脚本文件导致页面不能及时更新
CSS 约定写法 利用扩展
最全的CSS浏览器兼容问题小结
CSS 网页图文混排的10个技巧
IE的CSS制作网页技巧3则
创造100% 自适应css布局的行之有效的方法

CSS样式表 中的 如何用DIV+CSS制作横向菜单?


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

 
作者:阿捷
尽管在我的网站和文章里都有提到CSS制作菜单的方法,但很多初学者还是不太清楚如何实现,以及实现原理,我想专门写一篇详细教程会对大家比较有帮助。

我们先来看一个菜单的例子,最终效果是:

  • 首页
  • 产品介绍
  • 服务介绍
  • 技术支持
  • 立刻购买
  • 联系我们
 

然后我们来详细讲解步骤

第一步:建立一个无序列表

我们先建立一个无序列表,来建立菜单的结构。代码是:

<ul>
<li><a href="1">首页</a></li>
<li><a href="2">产品介绍</a></li>
<li><a href="3">服务介绍</a></li>
<li><a href="4">技术支持</a></li>
<li><a href="5">立刻购买</a></li>
<li><a href="6">联系我们</a></li>
</ul>

效果是:

  • 首页
  • 产品介绍
  • 服务介绍
  • 技术支持
  • 立刻购买
  • 联系我们

第二步:隐藏li的默认样式

因为看起来不是很好看,菜单通常都不需要li默认的圆点,我们给UL定义一个样式来消除这些圆点。

当然,为了更好的控制整个菜单,我们把菜单放在一个div里。页面代码变成:

<div class="test"> <ul>
<li><a href="1">首页</a></li>
<li><a href="2">产品介绍</a></li>
<li><a href="3">服务介绍</a></li>
<li><a href="4">技术支持</a></li>
<li><a href="5">立刻购买</a></li>
<li><a href="6">联系我们</a></li>
</ul> </div>

CSS定义为:

.test ul{list-style:none;}

说明:“.test ul”表示我要定义的样式将作用在test的层里的ul标签上。

现在的效果是没有圆点了:

  • 首页
  • 产品介绍
  • 服务介绍
  • 技术支持
  • 立刻购买
  • 联系我们

第三步:关键的浮动

这里是菜单变成横向的关键,我们给li元素加上一个“float:left;”属性,让每个li浮动在前面一个li的左面。

CSS定义为:

.test li{float:left;}

效果是:

  • 首页
  • 产品介绍
  • 服务介绍
  • 技术支持
  • 立刻购买
  • 联系我们
 

看,菜单变横向了。就这么简单!下面需要做的就是优化细节了。

第四步:调整宽度

菜单都挤在一起不好看怎么办?我们来调节li的宽度。

在CSS中添加定义width:100px指定一个li的宽度是100px,当然你可以根据你的需要调整数值:

.test li{float:left;width:100px;}

效果是:

  • 首页
  • 产品介绍
  • 服务介绍
  • 技术支持
  • 立刻购买
  • 联系我们
 

如果我们同时定义外面div的宽度,li就会根据div的宽度自动换行,例如定义了div宽350px,6个li的总宽度是600px,一行排不下就自动变成两行:

.test{width:350px;}

效果是:

  • 首页
  • 产品介绍
  • 服务介绍
  • 技术支持
  • 立刻购买
  • 联系我们

第五步:设置基本链接效果

接下来,我们通过CSS来设置链接的样式,分别定义:link、:visited、:hover的状态

.test a:link{color:#666;background:#CCC;text-decoration:none;}
.test a:visited{color:#666;text-decoration:underline;}
.test a:hover{color:#FFF; font-weight:bold;text-decoration:underline;background:#F00;}

效果是:

  • 首页
  • 产品介绍
  • 服务介绍
  • 技术支持
  • 立刻购买
  • 联系我们
 

第六步:将链接以块级元素显示

 

有朋友问,菜单链接的背景色为什么没有填满整个li的宽度?恩,解决的方法很简单,在a的样式定义中增加display:block,使链接以块级元素显示。

同时我们微调了如下细节:

  • 用text-align:center将菜单文字居中;
  • 用height:30px增加背景的高度;
  • 用margin-left:3px使每个菜单之间空3px距离;
  • 用line-height:30px;定义行高,使链接文字纵向居中;

CSS定义象这样:

.test a{display:block;text-align:center;height:30px;}
.test li{float:left;width:100px;background:#CCC;margin-left:3px;line-height:30px;}

效果变成:

  • 首页
  • 产品介绍
  • 服务介绍
  • 技术支持
  • 立刻购买
  • 联系我们
 

这样就漂亮多了吧。

第七步:定义背景图片

我们通常都会在每个链接前加一个小图标,这样导航更清楚。CSS是采用定义li的背景图片来实现的:

.test a:link{color:#666;background:url(arrow_off.gif) #CCC no-repeat 5px 12px;text-decoration:none;}
.test a:hover{color:#FFF; font-weight:bold;text-decoration:none;background:url(arrow_on.gif) #F00 no-repeat 5px 12px;}

说明:“background:url(arrow_off.gif) #CCC no-repeat 5px 12px;”这句代码是一个CSS缩写,表示背景图片是arrow_off.gif;背景颜色是#CCC;背景图片不重复"no-repeat",背景图片的位置是左边距5px、上边距12px;

默认状态下,图标为arrow.off.gif,当鼠标移动到链接上,图标变为arrow_on.gif

效果变成:

  • 首页
  • 产品介绍
  • 服务介绍
  • 技术支持
  • 立刻购买
  • 联系我们
 

现在css的完整代码是:

.test ul{list-style:none;}
.test li{float:left;width:100px;background:#CCC;margin-left:3px;line-height:30px;}
.test a{display:block;text-align:center;height:30px;}
.test a:link{color:#666;background:url(arrow_off.gif) #CCC no-repeat 5px 12px;text-decoration:none;}
.test a:visited{color:#666;text-decoration:underline;}
.test a:hover{color:#FFF; font-weight:bold;text-decoration:none;background:url(arrow_on.gif) #F00 no-repeat 5px 12px;}

页面的完整代码是:

<div class="test">
<ul>
<li><a href="1">首页</a></li>
<li><a href="2">产品介绍</a></li>
<li><a href="3">服务介绍</a></li>
<li><a href="4">技术支持</a></li>
<li><a href="5">立刻购买</a></li>
<li><a href="6">联系我们</a></li>
</ul>
</div>

好了,主要步骤就是这7步,立刻拷贝和修改代码试试,你也可以用CSS做横向菜单了!