关注互联网、体验互联网,记录成长历程

CSS制作圆角导航的另一思路

2008-08-20

制作圆角导航其实跟制作圆角边框是一样的道理,有一种很常见的方法就是使用CSS绝对定位,切四个圆角的小图片,然后分别定位在四个角,这样就可以实现自动伸缩。但是这样的代码因为嵌套的DIV过多,而显得有些复杂,这里提供另外一种思路,即是通过CSS背景的定位去制作。

在CSS背景属性中有一项是background-position,即是背景图像的定位,属性值可用英文(top | center | bottom | left | center | right)来定位,也可使用数值来定位,使用数值需要注意的是,当只有一个数值时,这个值将用于横坐标,纵坐标将默认是50%,如果有两个数值时,则分别是横坐标、纵坐标。通过background-position这个属性可以让背景图像随意定位在需要的位置。

在CSS背景属性中还有另外一项是background-repeat,即背景图像是否平铺。通过这个属性可以决定背景图像的平铺方式,是在纵向上平铺,还是在横向上平铺,或者是不平铺。

结合上面的两个背景属性,不使用绝对定位制作圆角导航的思路就出来了,即可通过两个分别定位左右背景图像的DIV再嵌套中间导航正文部分的UL,利用三者的长度错位来实现。HTML结构代码与CSS样式代码:

<!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=utf-8″ />
<title>Nav</title>
<style type=”text/css”>
body{font-size:12px;}
#navBox {background:#f00 url(images/left.jpg) no-repeat left bottom;    height:24px; padding-left:5px;}
#nav {background:#f00 url(images/right.jpg) no-repeat right bottom; padding-right:5px; height:24px;}
ul {list-style:none; line-height:24px; background:#f00 url(images/navBg.jpg) repeat-x; height:24px; margin:0; padding:0;}
li {float:left; width:60px; text-align:center;}
</style>
</head>

<body>
<div id=”navBox”>
<div id=”nav”>
<ul>
<li>导航一</li>
<li>导航二</li>
<li>导航三</li>
<li>导航四</li>
</ul>
</div>
</div>
</body>
</html>

从上面的结构代码可以看出,在<ul />标签外面套两个DIV,给每个DIV设定一个背景图像,然后分别设定背景图像的平铺方式为不平铺,再设定两个DIV的背景图像一个靠左一个靠右,最后是<ul />也就是导航条中间部分的背景,设定它的平铺方式为横向平铺。

圆角的可自动伸缩适应的导航条就做完了,这其中还有一些小地方是值得注意的:

1、外面两个DIV的padding数值是圆角图片的宽度;

2、在背景图像属性中增加与图片颜色相近的颜色值,这样可以在图片丢失或未加载完成时保证易读性;

3、如果在一开始没有设定全局样式*{margin:0; padding:0;}时,那么<ul />的属性里就必须设定“margin:0; padding:0;”,否则在IE下,导航条的<ul />前面会出现一段空白,这在Firefox下是没有的。

圆角导航由于可以不用考虑高度的自适应,所以相对于圆角边框来说要容易上一些,但圆角边框的制作依然可以根据制作圆角导航的方式来制作,分为上中下三个DIV,上下两个DIV就跟圆角导航的一样。

分类目录:前端开发 | 标签: | 查看:12,687

12 条评论

  1. ArtHacker 说道:

    做个效果页面或者效果图更加直观

  2. 摄氏度 说道:

    直接贴个图片上来也没多大意思,如果上传个网页上来还要上FTP,嫌麻烦,呵呵。下次找个插件可以直接在页面里运行代码的吧。

  3. 感觉天,感谢地!

  4. 老哈 说道:

    圆角的设计还是要看网站的需求 如果一般简介和快速的 都建议不要使用图片只接用代码填写。不过还是要参考代码的容量和图片大小之间的差距

  5. 摄氏度 说道:

    我只提供CSS制作圆角的一种思路,嘿嘿。不过你所说的用代码来直接编写圆角似乎就有点过了,那样的代码就显得有点太复杂了。

    • 摄氏度 说道:

      因为后台启用了防垃圾留言的插件,所以不带中文的评论将不能发表,呵呵,不好意思。

  6. 流觞 说道:

    CSS3 border都有专门的圆角属性了

    • 摄氏度 说道:

      CSS3似乎还离我们很遥远,即使CSS3发布了,具体情况还得看浏览器厂商,最希望的就是浏览器厂商们能统一遵循WEB标准了。

  7. elizabb 说道:

    即使浏览器都统一支持css3了,还要考虑到用老版本浏览器的用户,比如IE6 ╮(╯▽╰)╭

  8. 庸水禅 说道:

    运用的是传说中的滑动门技术吧?

  9. Oil Paintings 说道:

    过来踩踩

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>