hr h2 This sample page demonstrates a tiny fraction of what you get with Blueprint. /h2 hr 页面的下一部分,即三个文本框所在的行,也是由 Blueprint 预先定义的一些 span 实现的,如 清单 5 所示。 清单 5. Blueprint 预先定义的 span div h6 Here's a box /h6 p Lorem ... /p /div
div h6 And another box /h6 p Lorem ... /p /div
div h6 This box is aligned with the sidebar /h6 p Lorem ... /p /div hr hr 如前所述,带 span-n 标记的 div 横跨 n 列,位于左侧,并且右边距为一个分割线宽度。last 样式应该应用于任何序列的最后一列。令人惊讶的是,last 并未明确强制重新配置其后的任何元素;它仅仅将右边距设置为 0,这将覆盖 span-n 中 10 像素的默认右边距设置。而 hr 会强制清空,排除换行之后的任何元素。hr 将绘制一条白线,从而有效地呈现不可见的规则,但需要提供一个标准的垂直空白空间。 colborder 样式将在第一与第二以及第二与第三个框之间创建灰色线条。为了实现这条线,样式将右侧填充扩展至 24 像素,绘制了一条单像素线条(在列的中部),并将右边距扩展至 25 像素。由于 Blueprint 是基于像素的,因此保持网格对齐是非常必要的。 下一行内容与之前相类似,但第一列通过 prepend-1 修饰符稍微与网格有所远离,如 清单 6 所示。 清单 6. prepend-1 修饰符 div p img src="test.jpg" alt="test" Lorem ... /p
blockquote p Integer cursus ornare mauris. ... /p /blockquote ...
hr div h6 This is a nested column /h6 p Lorem ipsum ... /p /div div h6 This is another nested column /h6 p Lorem ipsum ... /p /div /div prepend-v 样式,其中 v 的范围是从 1 到 23,用于使用 padding-left 为 v 列和 v-1 分隔线预留足够的像素。 小狗图像的高度是 180 像素。由于它的高度是 18 的倍数,因此图像右侧和下方的文本在指定基线上仍然是等距的。 发现所有 Blueprint 技巧最好的方式是从上至下读取 screen.css 文件。下面给出了一些要点和技巧: hide 样式类使用 display: none; 隐藏任何元素。 added 和 removed 样式类在 Asynchronous JavaScript + XML (Ajax) 应用程序中用于突出显示页面中添加或删除的元素。还有一个名称为 highlight 的类,它可以将任何元素的背景置为黄色。 您可以使用 push-i 和 pull-j 来将某个列向右移动 i 列,或向左移动 j 列。 再说一次,Blueprint 的方法是独一无二的。它强制使用通常在打印设计中出现的网格。但是,这并不一定有坏处。这项决策允许您很好地控制自己的站点在任何浏览器中的显示效果。 YUI Grids 简介 相反,YUI Grids 为 CSS 提供了固定宽度的页面和可变宽度的页面,并且它提供了任意深度的列嵌套。您还可以任意定位或移动各列,因此可以使用 CSS 简单快捷地对页面上的内容进行排序。举例来说,您可以将导航从左侧移至右侧,而只需要一处 CSS 修改。此外,您使用 Yahoo 自己的 JavaScript 库来扩充 YUI Grids,以提高交互性。您可以另外了解关于 YUI JavaScript 库的更多信息。本文侧重介绍 Grids 的样式表,它可以独立于 JavaScript 库运行。 YUI Grids 在许多方面都与 Blueprint 相似: 它使用一组可预测的基线样式来简化版面。 它定义了版式样式。 它提供了许多预定定义的、适用于大多数 Web 应用程序的页面布局。 YUI Grids 还定义了一组列式网格,您可以通过嵌入来创建任意复杂的页面。 大约种 100 YUI Grids CSS 样式可以划分为三个类别,如 表 3 所示。 表 3. YUI Grids CSS 样式类别
描述各种流行的、双列页面格式。通常,一列比另一列宽,分别提供主要内容和导航功能。模板样式还提供了一些变量来交换两列的顺序。控制两个或多个 div 元素在一行中的显示方式。内嵌网格设置每个嵌入 div 的宽度,启用浮动,以及控制何时开始和结束一行。 与 Blueprint 不同,内嵌的网格样式使用百分比来描述各组件的宽度。因此,当页面的宽度增加时,整个网格以及网格中的各个元素也在随之增加。但是,网络的组件始终维持相对大小,比如说 66% 和 33%。 图 4 展示了一个通过嵌套实现的列布局。它的顶部和底部分别有一个页眉和脚注。内容区本身是一个含两列的网格,每个列又划分为一个两列网格。 图 4. 内嵌网格的 YUI Grids 布局
使用 YUI Grids 构建网页 要使用 YUI Grids,Yahoo 推荐在 Web 浏览器中以严格的行为提供多个呈现模式。您可以在 HTML 文件的第一行中请求严格模式: !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd" 接下来,您必须包括 YUI Grids CSS。为了您的方便,Yahoo 提供了一个最简化的样式表。 link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/2.6.0/build/reset-fonts-grids/reset-fonts-grids.css" (您还可以下载文件,并将它保存在自己的 Web 根目录中,或者,如果只希望使用它的一部分特性,则可以下载它的各个组件。一个部分实现了重置(reset);另一个部分描述版式(typography);第三个部分定义网格元素(grid))。 与 Blueprint 相似,使用 YUI Grids 构建的页面必须拥有标准的组件,如 清单 7 所示。 清单 7. YUI Grids 的标准页面组件 div id="doc" div id="hd" !-- header -- /div div id="bd" !-- body -- /div div id="ft" !-- footer -- /div /div 最外面的 div 的 ID 用于确定页面的宽度。共有四种样式,从 doc1 到 doc4。id="doc1" 用于指定 750 像素的页面;id="doc2" 用于指定 950 像素的页面;id="doc4" 用于指定更宽且越来越常用的 974 像素的页面。id="doc3" 是不固定的宽度。所有页面宽度样式都将内容居中。 站点内容应该放置在 ID 为 bd 的 div 中。 内容进一步划分为两个 “块”,一主一次,如 清单 8 所示。(可以根据需要再对块进行划分,如 图 4 所示)。 清单 8. 主块和从块 div id="bd" div id="yui-main" div /div /div
div /div /div yui-b 表示 “块”,并且一个 YUI Grids 页面中应该始终有两个块。根据习惯,yui-main 一般显示在左侧,除非您向最外面的 div 添加了一个类样式以更改两个列的顺序。举例来说, div id="doc" 将 180 像素的区域置于左侧(否则应位于最右侧)。 每个块中都嵌入了一个风格。每个网格可以包含一个或多个子网格,或者一个或多个 “单元”。清单 9 是用于构建如 图 4 所示的四列布局的 HTML 和相关的 CSS。 清单 9. 用于构建如图 4 所示的四列布局的 HTML 和相关的 CSS div id="outermost" div id="firstgrid" div /div div /div /div
div id="secondgrid" div /div div /div /div /div yui-g 代表 “网格”,而 yui-u 代表 “单元”。此处,outermost 网格(其名称仅仅是为了在讨论中便于区别)包括另外两个网格:firstgrid 和 secondgrid。first 样式指示新 “行” 的开始,或者网络及单元的顺序。实际的内容将显示在各个单元中。 默认情况下,网格 —— 也就是 yui-g —— 在两个单元之间是平均分配的。您可以修改它,方法是使用一个特殊的类来替换 yui-g。举例来说,如果您希望将之前清单中的两个网格继续划分为两个单元,其中一个单元是另一个单元的两倍宽度,可以编写如 清单 10 所示的代码。 清单 10. 将两个网格继续划分为两个单元,其中一个单元是另一个单元的两倍宽度 div id="outermost" div id="firstgrid" div /div div /div /div div id="secondgrid" div /div div /div /div /div yui-gc 将两个单元分别设置为可用宽度的 66% 和 33%。结果如 图 5 所示。其他的变量请参见 YUI Grids 文档。一个有趣的例外是网格样式 yui-gb,它可以平均划分三个 嵌入单元的空间。 图 5. 修改 YUI Grids CSS 网格中的单元的布局