这是一个标签宽度可变的圆角水平导航,参考前面的基于圆角图片的水平标签导航(点击查看),进行一些改变,使得导航中的列表项可以根据它们所包含文本的长度来调整大小。具体的CSS设置和实现细节在代码中有详细的注释,其中需要使用到的4个标签圆角图片如下:
1、HTML代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Vertical Navigation</title>
<!--meta标记定义的字符集是支持中文的gb2312-->
<meta http-equiv=content-type content="text/html; charset=gb2312">
<!--链接外部CSS样式 -->
<link rel="stylesheet" href="fixed-tabs.css" type="text/css" media="screen" />
</head>
<body id="body_his"> <!--为body设置一个id属性,和导航的id关联起来以指出用户目前在浏览网站的哪个页面或哪个区 -->
<!--直接将导航项目包含在一个列表中,为排序列表和div一样属于块级别元素,所以直接将id赋予列表自身 -->
<ul id="nav">
<!--为列表的每个项目都设置唯一的id -->
<li id="nav_hom"><a href="/">Home</a></li>
<li id="nav_map"><a href="/maps/">Maps</a></li>
<li id="nav_jou"><a href="/journal/">Journal</a></li>
<li id="nav_his"><a href="/history/">History</a></li>
<li id="nav_ref"><a href="/references/">References</a></li>
<li id="nav_con"><a href="/contact/">Contact</a></li>
</ul>
</body>
</html>
2、CSS代码
/*CSS STYLE SHEET FOR [variable-tabs.html]
Created by [Serein_Chan]
Email: [Serein_Chan@foxmail.com]
Author Blog:[http://blog.csdn.net/cxwen78]
*/
/*注释 */
/*由于导航字体可能会与页面其余字体相匹配,所以font-family在CSS较高的位置进行声明 */
html {
font: small/1.4 "Lucida Grande", Tahoma, sans-serif;
}
body {
font-size: 92%;
}
/*ul导航块的设置,不需要设置宽度、和背景颜色 */
#nav {
margin: 0;
padding: 0;
list-style-type: none; /*列表无样式*/
float: left; /* Contain floated list items */
}
/*导航块菜单项的设置,不需要设置宽度 */
#nav li {
margin: 0;
padding: 0;
float: left;
margin: 0 1px 0 0; /*列表项右侧应用1px边距,实现视觉上让标签彼此分离 */
/*边距不为零,需要把显示属性display设置为inline,即内联元素,前后无换行,以纠正IE双边距错误 */
display: inline;
/*应用背景颜色,用不透明的左圆角图片覆盖左上角,不指定位置,因为默认为“左上”或“0 0” */
background: #6F6146 url(images/tab_left.gif) no-repeat;
}
/*列表项内链接元素a的样式设置,不需要设置宽度 */
#nav a {
float: left; /*浮动处理,链接自动转成一个inline-block,即行内块元素 */
padding: 0 15px; /*浮动处理后,要设置补白调整inline-block的位置,左右内距15px */
color: #FFF; /*文本颜色 */
text-decoration: none; /*定义标准的文本,链接文本没有下划线*/
line-height: 2.5; /*行高度*/
/*用右上圆角图片覆盖右上角,top和right指定了“右上”位置*/
background: url(images/tab_right.gif) no-repeat top right;
}
/*由于前面的"背景颜色"不是应用在链接元素上,而是应用在它的父元素列表项上
*所以,只能设置鼠标停留状态下只改变导航项的文字颜色*/
#nav a:hover {
color: #F90; /*伪类hover设置鼠标停留时字体颜色改变*/
}
/*设置“当前位置”状态,
* 左上角图片设置在li里,右上角图片设置在a里 */
#body_hom #nav_hom,
#body_map #nav_map,
#body_jou #nav_jou,
#body_his #nav_his,
#body_ref #nav_ref,
#body_con #nav_con {
/*背景颜色和图片tab_left_active.gif颜色相同,图片不重复,位置默认左上角*/
background: #BEB06F url(images/tab_left_active.gif) no-repeat;
}
#body_hom #nav_hom a,
#body_map #nav_map a,
#body_jou #nav_jou a,
#body_his #nav_his a,
#body_ref #nav_ref a,
#body_con #nav_con a {
/*添加右上角激活背景图片,图片不重复,位置设置为top right(右上)对齐*/
background: url(images/tab_right_active.gif) no-repeat top right;
color: #1A1303; /*加深文本颜色*/
}
3、效果图