《十天学会web标准(div+css)》之第七天 横向菜单

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

  1、横向列表菜单


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

  3、CSS Sprites

  一、横向列表菜单

  前边学习过纵向导航菜单,又学习了float属性,那么要实现横向导航菜单是不是很简单了,只需要把li横向排列就可实现了。把第四节的代码拿过来直接用,修改后的代码如下:
<!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=gb2312" />
<style type="text/css">
body { font-family: Verdana; font-size: 12px; line-height: 1.5; }
a { color: #000; text-decoration: none; }
a:hover { color: #F00; }
#menu { border: 1px solid #CCC; height: 26px; background: #eee; }
#menu ul { list-style: none; margin: 0px; padding: 0px; }
#menu ul li { float: left; padding: 0px 8px; height: 26px; line-height: 26px; }
</style>
</head>
<body>
<div id="menu">
<ul>
<li><a href="#">首页</a></li>
<li><a href="#">网页版式布局</a></li>
<li><a href="#">div+css教程</a></li>
<li><a href="#">div+css实例</a></li>
<li><a href="#">常用代码</a></li>
</ul>
</div>
</body>
</html>


点击图片打开新窗口浏览


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

点击图片打开新窗口浏览


  为了用户体验更加友好,还是把a转换成块级元素,也可以给a设置背景色或背景图片来更加美观了,另外再设置鼠标放上时的样式:
#menu width: 370px; margin: 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 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 display: block; width: 87px; height: 28px; line-height: 28px; text-align: center; background: url(/upload/2010-08/17/091033_nav_bg2.gif) no-repeat; font-size: 14px; }
#menu ul li a:hover background: url(/upload/2010-08/17/091033_nav_bg3.gif) no-repeat; }
#menu ul li a#current background: url(/upload/2010-08/17/091033_nav_bg.gif) no-repeat; font-weight: bold; color: #fff; }


  为了让用户知道当前所处的页面,做了一个当前页面的状态,把ID添加到相应的a上:
<!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=gb2312" />
<style type="text/css">
body { font-family: Verdana; font-size: 12px; line-height: 1.5; }
a { color: #000; text-decoration: none; }
a:hover { color: #F00; }
#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(http://www.zzsky.cn/effect/images/201105102100_build/nav_bg2.gif) 0 0 no-repeat; font-size: 14px; }
#menu ul li a:hover { background: url(http://www.zzsky.cn/effect/images/201105102100_build/nav_bg3.gif) 0 0 no-repeat; }
#menu ul li a#current { background: url(http://www.zzsky.cn/effect/images/201105102100_build/nav_bg1.gif) 0 0 no-repeat; font-weight: bold; color: #fff; }
</style>
</head>
<body>
<div id="menu">
<ul>
<li><a id="current" href="#">首页</a></li>
<li><a href="#">网页版式</a></li>
<li><a href="#">web教程</a></li>
<li><a href="#">web实例</a></li>
<li><a href="#">常用代码</a></li>
</ul>
</div>
</body>
</html>


  三、CSS Sprites技术

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

  讲CSS Sprites之前,先把背景图片给搞清楚:
#menu ul li background:#ccc url(images/nav_bg2.gif) no-repeat; }


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

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

点击图片打开新窗口浏览


<!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=gb2312" />
<style type="text/css">
body { font-family: Verdana; font-size: 12px; line-height: 1.5; }
a { color: #000; text-decoration: none; }
a:hover { color: #F00; }
#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(http://www.zzsky.cn/effect/images/201105102100_build/nav_bg.gif) 0 -28px no-repeat; font-size: 14px; }
#menu ul li a:hover { background: url(http://www.zzsky.cn/effect/images/201105102100_build/nav_bg.gif) 0 -56px no-repeat; }
#menu ul li a#current { background: url(http://www.zzsky.cn/effect/images/201105102100_build/nav_bg.gif) 0 0 no-repeat; font-weight: bold; color: #fff; }
</style>
</head>
<body>
<div id="menu">
<ul>
<li><a id="current" href="#">首页</a></li>
<li><a href="#">网页版式</a></li>
<li><a href="#">web教程</a></li>
<li><a href="#">web实例</a></li>
<li><a href="#">常用代码</a></li>
</ul>
</div>
</body>
</html>


点击图片打开新窗口浏览
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值