首先我先写下了这个导航的HTML代码,由于是结构,要尽可能的简洁干净:
<ul id="nav"> |
这里的#nav为什么要加一个position:relative; 呢?请查阅《解读absolute与relative》而 padding:0; margin:0; list-style:none;是为了去掉UL前的那个黑点,并且清除浏览器中UL的默认值。你也可以在CSS文件的开头用一句 *{padding:0; margin:0; list-style:none;}来清理一下标签在浏览器中的默认值。把他们放躺下之后我看了一下效果,不得了,所有的链接全都合到一起了。因为所有的LI都被定义成为绝对值大家都跑到原点对齐去了。我们需要把他们分开。所以接着写CSS把他们都分开:
#a {left:0px; top:0px; } |
我们发现他们的TOP值都是0,为了让代码少一点我们把CSS再做一次修改:
#nav {padding:0; margin:0; width:410px; height:25px; line-height:25px; |
都已经区分开,下面就是加背景图片了。这里要注意:图片要加在A标签上,如果不然可能就会出现错误。当然也可以放在UL背景或是li上,但是那样做法、图片就都不一样了,可能也不太好理解。这里只以放在A标签上。
#nav a {width:82px; height:25px; padding:30px 0 0 ; overflow:hidden; |
这里我们把A标签也定义为宽为82高为25的方块,这里要注意一定要把A定义为块:display:block; 因为只有这样才可以完全显示背景图片。与overflow:hidden;相结合还可以把A标签中的文字挤出显示区,当然他的父级标签也要有overflow:hidden;不然在IE下还是会出现溢出显示的现象。加上一个背景图,这时浏览一下我们发现五个区块只出现图片的第一区,五个块都是一样的。我们需要把五个块应有的显示内容表现出来。就需要再加一些指令:
#b a {background-position: -82px 0px;} |
我们这里看到其中并没有 #a a 这是因为#a a的显示内容就是当前内容,所以这句可以省了,由于#nav a中已经定义了背影图片了由于#nav a包括了#a a、#b a…,所以这里只要做好背景的位置就好了。再浏览一下,是正确了,但是还没有鼠标翻转的效果。下面再来把这个鼠标翻转的效果再补上:
#a a:hover {background-position: 0 -25px} |
大家也看到了,这里也有很多重复的代码,可不可以再省略呢?如果只是针对IE流览器是可以的,因为IE在背景两个私有属性叫:background-positionX,background-positionY。但是Firefox与Opera都不支持,所以这里就不能省。基本上是成功了不过还有一个小细节,细心的朋友一定发现了,LI的位置移动是以79PX为一个单位,而图片则都是82PX的,链接也是82PX的大小。所以我们开头的#nav 的长度是错的,正常的是398px,为什么是398px那就自己想想算算吧!下面给出全部的CSS代码:
|
错误的效果:
运行代码框
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
正确的效果:
运行代码框
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
如对于本文有任何疑问、意见以及建议,请在文章底部的留言板上留言。或者去天极设计在线主题社区讨论。
更多精彩,尽在天极设计在线design.yesky.com!

电脑美术设计热门专区

设计软件视频教程大全

设计软件经典教程

设计人生——数码设计人访谈实录集
·软件论坛重装上线
·精彩网页素材 ·照片处理专区
·设计软件经典教程集粹
关注此文的读者还看过: