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" (您還可以下載文件,并將它保存在自己的 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 網格中的單元的布局