首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

2.3 无懈可击的方法

由于传统的设计基于图片的导航栏的技术存在这样那样的不我们决定以

LanceArmstrong.com 的选项卡设计方案为例用简洁且基于标准的 CSS 方法来对其进行 目标就是改掉前文中提到的传统方法中的不足

对于任何一个理想的项目我们首先需要决定如何才能使它所用到HTML代码尽 可能的有意义以及可存就导航栏而言应该使用列表即包含一组链接的列

<ul id="nav">

<li id="t-intro"><a href="/">Introduction</a></li>

<li id="t-about"><a href="about.html">About Lance</a></li>

<li id="t-news"><a href="news.html">News &amp; Events</a></li>

<li id="t-sponsors"><a href="sponsors.html">Sponsors</a></li>

</ul>

一个简单的无序列表正是我们想要的可以用它来构建一组完美的选项卡。简易 HTML代码将确保页面组件在不同的浏览器浏览设备和辅助软件中都有极高的可读 性,这一切都归功于它的小巧与紧凑与传统的基于嵌套表格的方法所需要的大堆代 码相两者之间的差别显而易见

请注意,每一个列表项都设有惟一 id 。稍后,当我们为了表示哪一个页面正 在被浏览而赋予选项卡一个选中状态时,这 i d 就会帮我们大忙了

2.3.1 无样式

尚未特别设定样式默认外观下的无序列表通常是竖状显并且在每一项的 左侧都有项目符对于不支 CSS 的浏览设备或者文本浏览它们也能毫无问题 地呈现出这个导航列


2-4 这就是未经装饰的原始无序列表

在这里使用列表还有另外一个优许多屏幕阅读软件都会大声地读出列表项的个数。这使浏览者可以很清楚地了解页面上的内容比如对于使用著名屏幕阅读软件 JAWS( Freedom Scientific 出品)的用户来说他们就可以在听完此列表项的个数后直 接跳到下一个列表或下一个页面对象上(想进一步了解JAWS在网页中是如何导航的, 可参见 www.freedomscientific.com/fs_products/Surfs_Up/ Navigating.htm)

2.3.2 两张小图片

回忆一下前面所提到的通常做整组选项卡都在一张图片—— 事实上,一共 有四张图分别表示每一个选项卡被选中的状为了简化这种情我们打算只 用两张小图片在每一个选项卡中横向平因为它们会重复铺所以不必担心每 一个选项卡的宽度和高 这一点很重,稍后会加以阐述

如果回过去再看看原来的选项卡就会发现渐变淡出效果的颜色从选项卡的顶部开 始,逐渐往下融入到背景色中。使用一个大家所熟悉的图片编辑软件Adobe Photoshop, 我们做好了两张图片(一个代表选中状态一个代表未选中状态)用它们重现颜色渐变 淡出最后成为透明的效我们把每张图片的底部都设成了透明一会儿,将用 CSS 来填充这部分透明区域。见 2 - 5

2 - 5  这是那两张图片的放大特写我们将把它们平铺于每一个选项卡下形成颜色渐变淡出 的效果每一张图片下面部分的颜色都是透明(图中的棋盘格子状区)稍后将 C SS为其填充颜色

可以看每张图片只 1 0 像素顶部也都 1 像素高的高亮区颜色往

下渐变淡出融入到透明的背景

2.3.3 应用样式

配料已经全了现在只需使CSS把无序列表和两张用于平铺背景的图片组合在一 起就可以了

第一步添加一 C S S 使导航列表不再是默认的竖而变成水平排

#nav {

width: 100%;

margin: 0;

padding: 10px 0 0 46px;

list-style: none;

background: #FFCB2D;

}

#nav li { float: left; margin: 0; padding: 0;

font-family: ¡°Lucida Grande", sans-serif;

font-size: 55%;

}

使用 float 属性把导航栏拽成水平。这里还声明了黄色的背景,选项卡将位于 该背景色之上这个黄色的背景很重要它将确保整个系统(黄色的外围容器和选项卡) 是可伸缩的

我们还把默认的 margin(页边距) padding 设为零并设定了字体font-size 也设为了默认文字大小的 55%。这里在<body>中设定了页面的基准文字大小 small。 这样 IE/Win 的用户也可以自如地调整这个选项卡的文字大,所以“今晚我们可以睡 个好觉

2-6 展示了目前为止整个导航栏部分的外

2-6 设计初期的导航栏还显得有些凌乱

嗯,我知道革命尚未成功不过只要再加上几 C SS 我们就可以高唱 胜利的凯歌了

2.3.4 用浮动来解决

因为浮动的<li>把原来文档的自然顺序打乱了无法撑开外围那个定义了背景色的<ul>,所以这是我们首先需要处理的问题。换句话说,因为内部对象被浮动了,以使得外围的<ul>无法确定自身的高

为了修正这个问题我们需要同样<ul>也设置为浮动这块空间便能被各项<li>填充了黄色的背景也显露了出来( 2-7)

2 -7  通过<u l>与列表项同样设置为浮动的背景又显示出来了

#nav {

float: left; width: 100%; margin: 0;

padding: 10px 0 0 46px; list-style: none; background: #FFCB2D;

}

#nav li { float: left; margin: 0; padding: 0;

font-family: "Lucida Grande", sans-serif;

font-size: 55%;

}

因为将 #nav 设置为浮动的所以必须确保没有其他对象紧跟其如 果有一个对象紧跟在它后面可能是块状或横行形式的内容那么这部分内容 需要被设置 clear:left 规则以保证它将位 于导航栏的下方

现在看起来好多了,我们能确保无论导航栏的尺寸如何变化,黄色的背景都将 布满整个内容区域,有效地保护了这部分 的设计效果。这种通过浮动来修正显示问 题的方法也免去了添加额外的外围<div> 去弥补失去的背景色的麻烦,它同样还省 去了设置列表的高度,尽可能地达到最大 的灵活

2.3.5 为选项卡定形

下一步我们要给链接增加几条定p a d d i ng b o r d e r 和背景色

#nav a {

float: left; display: block; margin: 0 1px 0 0; padding: 4px 8px; color: #333;

text-decoration: none; border: 1px solid #9B8748; border-bottom: none; background: #F9E9A9;

}

通过把<a>设置为 display: block以使整个选项卡都可以被点击。块级对象 总是独占一整行所以我们必须使 float 属性使他们再次处于同一

我们把每个选项卡 1 像素的右侧空白隔开每个链接也都设定 padding,文字 颜色和文本修饰(下划线) 也都作了修改。每一个链接除了底边以外都设置了边框。<a>设置 padding 也很重要,它可使整个选项卡都是可点击而不是仅仅只有文字链 接才可以点击

令人惊讶的仅仅通过我们刚添加的这么几 CSS 选项卡的形状便显现 了出( 2 - 8 )

2 -8  通过给<a> padd in g,整个的按钮区域都是可点击的,为用户操作提供了方便

2.3.6 对齐背景图片

下一步,将引入我们先前制作的图片,把它们设置为背景,平铺于每个选项卡

#nav a {

float: left;

display: block;

margin: 0 1px 0 0;

padding: 4px 8px;

color: #333;

text-decoration: none; border: 1px solid #9B8748; border-bottom: none;

background: #F9E9A9 url(img/off_bg.gif) repeat-x top left;

}

我们在背景的设置中使用了 CSS 简写在一条规则中同时声明了颜色和图片两项, 颜色(#F9E9A9)将透过图片的透明区域显示出来图片的下面部分已由我们Photoshop 处理成为透明的,此时设置的背景颜色就显示成了这片区域的颜

我们把图片横向平铺(repeat-x 的作用)于选项卡的顶部( 2-9)图片垂直方向上 没有达到的区(包括透明部分)则显示背景

2 - 9    通过横向平铺背景图片加上了高亮和渐变效果因为图片会重复平, 所以任何宽度 / 高都不会影响到设计效果

我们剩下要去做的事是增加悬停和选中状态的声明(我们把这两部分合在了一)但是首要在选项卡底部增加一个实线边当选项卡被选中底边便消,使 选项卡与其下的白色页面融为一体

当希望边框重叠的时可以使用一个小的平铺图片让它的高度等于边框的高 度,这是我认为处理这种情况最简单且最成功的方法!这就是我们引入的第三张图片, 它是那么的小以至于可以忽略不( 2 - 1 0 )

2 - 1 0  把这 1 个像素高的图片作为选项卡的底允许激活的选项卡把其覆使其底边与白色页面的其余部分融为一体

这张 1 × 37 像素的 GIF 图片将沿选项卡的底边平因为我们是把它横向平,所以它 的宽度没有限我自己其实也记不清楚为什么会把这张图片的宽度设置为奇怪 37 像素。 图 2-11 显示的是目前为止导航栏的各个成 分的层叠顺序依次是背景色1 像素的平铺 边框和选项卡内容它们构成了整个设计方

通过增加用于平铺的背景图片的尺寸能够改IE/Win的渲染速 度当使用的平铺图片太小有时 会导致渲染的滞缓

2 -1 1   3 D 展示了平铺背景图片是如何放置并构成导航栏底边的

2.3.7 增加底边

我们现在来为前面 #nav 声明增加代码以引入背景小图片

#nav {

float: left; width: 100%; margin: 0;

padding: 10px 0 0 46px;

list-style: none;

background: #FFCB2D url(img/nav_bg.gif) repeat-x bottom left;

}

我们把图片横向平铺并对齐于底边因为图片只 1 个像素高所以声明过的黄 色背景色(#FFCB2D)将显示在导航栏区域的其他部分

2 -1 2  将底边用平铺背景图实现后我们的工作接近终点了

2.3.8 悬停变换

对于悬停和选中状态我们将复制在 LanceArmstrong.com 上使用的灰色选项卡的颜 色,只需更换我们所设置的默认米色背景图片即可完成所有这些事情只需要一个简 单的声明

#nav a:hover, body#intro #t-intro a {

color: #333;

padding-bottom: 5px;

border-color: #727377;

background: #fff url(img/on_bg.gif) repeat-x top left;

}

注意一点,我们已经加深了文字和边框的颜色,并采用了将渐变为白色(#fff)灰色背我们还给底部 padding 增加 1 像素( 4 像素增 5 像素) 这额外 1 像素将迫使选中和悬停状态的选项卡覆盖住背景边框(它同样也为 1 像素高),使其看上 去和下面的页面连成一( 2-13)

2-1 3 通过把激活的选项卡的底 paddin g 4px 增加 5px我们就可以把底边覆产生一种选项卡前置的效果

2.3.9 选中状态

选项卡怎么才能知道它何时被选中这就是我们添加子选择符的目

#tabs a:hover, body#intro #t-intro a

子选择符的功能是基于父对象来选取某个特定对象通过指定由空格来分开的各个 对我们可以顺着文档树的顺序缩小目标范想了解更多关于选择符的内容,请 参见www.w3.org/TR/REC-CSS2/selector.html

所以,如果为<body>增加一 id,名 intro,如下

<body id="intro">

这个声明将会被解释“在<body> id intro 的页面中使用替换 的背景和加深的颜这是在大多数导航栏设计方案中使 CSS 来实现“Y ou  a r e here效果的一种简便方法在这个例子中我们把悬停和选中两种选项卡变化效果 合并在一 CS S 声明

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论