当前位置:首页 > DIV+CSS教程 > 正文

第七天 横向导航菜单

作者:××× 来源:标准之路 【 】 浏览: 添加日期:2010-08-20 我要评论(68)     

今天我们开始学习《十天学会web标准(div+css)》的html列表,包含以下内容和知识点:

  • 横向列表菜单
  • 用图片美化的横向导航
  • css Sprites

一、横向列表菜单

前边学习过纵向导航菜单,又学习了float属性,那么要实现横向导航菜单是不是很简单了,只需要把li横向排列就可实现了。把第四节的代码拿过来直接用,修改后的代码如下:


标准之路www.aa25.cn 提示:可以先修改部分代码后再运行

最主要就是用float让li向右浮动后,实现横向排列,具体步骤不再赘述。以前许多朋友提问怎么让它水平居中,其实很简单,首先导航的宽度是固定的,然后设置margin:0 auto;即可实现了

为了用户体验更加友好,还是把a转换成块级元素,也可以给a设置背景色或背景图片来更加美观了,另外再设置鼠标放上时的样式。

#menu { width:370px; margin:0 auto; border: 1px solid #CCC; height:26px; background: #eee;}
#menu ul { list-style: none; margin: 0px; padding: 0px; }
#menu ul li { float:left;}
#menu ul li a { display:block; padding: 0px 8px; height: 26px; line-height: 26px; float:left;}
#menu ul li a:hover { background:#333; color:#fff;}

学到这里,常用的样式大部分都涉及到了,也许许多你还记不住,但至少混个脸熟。为了提高效率,建议大家还是手写代码,如果你还不能手写代码,就参考上边的样式,自己在css编辑器里设置吧,不再大量截图了。

经过上边的修改,现在的用户检验是不是更加友好了呢。

这里的#menu ul li a本来是可以不加float:left的,但IE6下在li没有设置宽度,#menu ul li a设置display:block的情况下,将会显示错乱,所以需要在a上增加float:left来修正。万恶的IE6,怎么就淘汰不掉呢

二、 用图片美化的横向导航

背景图片也是网页制作当中最常用的样式之一,运用好背景图片,可以使你的页面更加出色,更加人性化和更快的加载速度。下面还是用以前视频教程中的实例进行讲解,或者直接去看视频教程http://www.aa25.cn/div_css/895.shtml。显示效果如下:

用到三张图片,分别为当前状态,鼠标放上时样式,和默认样式用的图片:

下面修改css样式,只截图了一张,设置方法相同:

#menu { width:500px; height:28px; margin:0 auto; border-bottom:3px solid #E10001;}
#menu ul { list-style: none; margin: 0px; padding: 0px; }
#menu ul li { float:left; margin-left:2px;}
#menu ul li a { display:block; width:87px; height:28px; line-height:28px; text-align:center; background:url(/upload/2010-08/17/091033_nav_bg2.gif) 0 0 no-repeat; font-size:14px;}
#menu ul li a:hover { background:url(/upload/2010-08/17/091033_nav_bg3.gif) 0 0 no-repeat;}
#menu ul li a#current { background:url(/upload/2010-08/17/091033_nav_bg.gif) 0 0 no-repeat; font-weight:bold; color:#fff;}

为了让用户知道当前所处的页面,做了一个当前页面的状态,把ID添加到相应的a上。


标准之路www.aa25.cn 提示:可以先修改部分代码后再运行

三、 CSS Sprites技术

CSS Sprites在国内很多人叫css精灵或css雪碧。它是把网页中一些背景图片整合到一张图片文件中,再利用CSS的背景图片定位到要显示的位置。这样做可以减少文件体积,减少对服务器的请求次数,提高效率。

讲CSS Sprites之前,先把背景图片给搞清楚

#menu ul li a { background:#ccc url(images/nav_bg2.gif) 0 0 no-repeat; }

css背景属性缩写后如上所示,#ccc表示背景色;url()里是背景图片路径;接下来的两个数值参数分别是左右和上下,第一个参数表示距左多少px,第二个参数表示距上多少,这和padding的简写方式是不 一样,一定不要弄混。另外再强调一点css中值为0可以不带单位,其它数值都必须带单位(line-height值为多少倍时,zoom,z-index除外);no-repeat表示背景图片向哪个方向重复,此时为不重复。

还需说明一点的是定位图片位置的参数是以图片的左上角为原点的,理解了这些,CSS Sprites技术就基本上懂了,就是靠背景图片定位来实现的。把三张背景图片整合到一张上,如下图:


标准之路www.aa25.cn 提示:可以先修改部分代码后再运行

CSS Sprites详细的讲解请参考视频教程:http://www.aa25.cn/div_css/896.shtml

(如果您觉得本站不错,请告诉身边的朋友,或转载到论坛、百度知道、贴吧等,记得带网址哟,不胜感激!)

〖DIV+CSS教程〗Tags: 十天学会web标准 导航 菜单 横向导航

所属专题:十天学会DIV+CSS

更多评论(68)..会员评论

chuijie(183.16.*.*) 发表于:2011-08-11 17:28:49
很好!···
navy7260(124.135.*.*) 发表于:2011-08-10 11:06:17
老师你好,“#menu ul li a#current”是否应该为“#menu ul li a:active”,使用前者鼠标点上去背景没有变化。
管理员回复:不是,后者是所有点击过的,和前者是不一样的
qq341135(116.26.*.*) 发表于:2011-08-01 21:27:45
这个教程真的很适合新手,是目前看到感觉最好的,更夸张的是提问管理员还有回复,太感动了,特意注册个账号真心表示感谢!
lancre(125.89.*.*) 发表于:2011-07-18 17:18:02
老师你好,之前有问过你预览不出现背景图的问题,用上面教程中的实例,我发现把li设置为块再设置背景图预览可以看到,而把a设置为块再设置背景图就看不到。还是不明白为什么,同一张图,地址也是一样的
管理员回复:那就要看a的范围有多大了
1002866731(61.152.*.*) 发表于:2011-07-14 17:20:30
老师,我初学这个,请问怎么将鼠标放在链接上出现的下划线与内容有一段距离,而不是紧贴着他的,还望老师能解答!!不胜感激!!
管理员回复:这个解决不了,除非用下划线来实现
sifeng(59.174.*.*) 发表于:2011-06-30 12:15:29
用图片美化的横向导航,分别为当前状态(#menu ul li a ),鼠标放上时样式(#menu ul li a:hover),和默认样式用什么标签啊?老师,求急啊?
管理员回复:默认就是a呀
hushaoju(61.184.*.*) 发表于:2011-06-25 14:50:06
这个网站太棒了,已经将网址放在QQ签名上了。站长加油!
管理员回复:谢谢啊
rtxcmgy(114.138.*.*) 发表于:2011-06-13 22:49:02
老师,我遇到个问题,就是我的导航背景图片在DW设计里能显示出来,但是一预览就没了,怎么回事?
管理员回复:路径问题

出差旅游免费预订酒店

【视频教程】新手常见问题