hr h2 This sample page demonstrates a tiny fraction of what you get with Blueprint. /h2 hr 頁面的下一部分,即三個文本框所在的行,也是由 Blueprint 預(yù)先定義的一些 span 實(shí)現(xiàn)的,如 清單 5 所示。 清單 5. Blueprint 預(yù)先定義的 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 標(biāo)記的 div 橫跨 n 列,位于左側(cè),并且右邊距為一個分割線寬度。last 樣式應(yīng)該應(yīng)用于任何序列的最后一列。令人驚訝的是,last 并未明確強(qiáng)制重新配置其后的任何元素;它僅僅將右邊距設(shè)置為 0,這將覆蓋 span-n 中 10 像素的默認(rèn)右邊距設(shè)置。而 hr 會強(qiáng)制清空,排除換行之后的任何元素。hr 將繪制一條白線,從而有效地呈現(xiàn)不可見的規(guī)則,但需要提供一個標(biāo)準(zhǔn)的垂直空白空間。 colborder 樣式將在第一與第二以及第二與第三個框之間創(chuàng)建灰色線條。為了實(shí)現(xiàn)這條線,樣式將右側(cè)填充擴(kuò)展至 24 像素,繪制了一條單像素線條(在列的中部),并將右邊距擴(kuò)展至 25 像素。由于 Blueprint 是基于像素的,因此保持網(wǎng)格對齊是非常必要的。 下一行內(nèi)容與之前相類似,但第一列通過 prepend-1 修飾符稍微與網(wǎng)格有所遠(yuǎn)離,如 清單 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 分隔線預(yù)留足夠的像素。 小狗圖像的高度是 180 像素。由于它的高度是 18 的倍數(shù),因此圖像右側(cè)和下方的文本在指定基線上仍然是等距的。 發(fā)現(xiàn)所有 Blueprint 技巧最好的方式是從上至下讀取 screen.css 文件。下面給出了一些要點(diǎn)和技巧: hide 樣式類使用 display: none; 隱藏任何元素。 added 和 removed 樣式類在 Asynchronous JavaScript + XML (Ajax) 應(yīng)用程序中用于突出顯示頁面中添加或刪除的元素。還有一個名稱為 highlight 的類,它可以將任何元素的背景置為黃色。 您可以使用 push-i 和 pull-j 來將某個列向右移動 i 列,或向左移動 j 列。 再說一次,Blueprint 的方法是獨(dú)一無二的。它強(qiáng)制使用通常在打印設(shè)計中出現(xiàn)的網(wǎng)格。但是,這并不一定有壞處。這項決策允許您很好地控制自己的站點(diǎn)在任何瀏覽器中的顯示效果。 YUI Grids 簡介 相反,YUI Grids 為 CSS 提供了固定寬度的頁面和可變寬度的頁面,并且它提供了任意深度的列嵌套。您還可以任意定位或移動各列,因此可以使用 CSS 簡單快捷地對頁面上的內(nèi)容進(jìn)行排序。舉例來說,您可以將導(dǎo)航從左側(cè)移至右側(cè),而只需要一處 CSS 修改。此外,您使用 Yahoo 自己的 JavaScript 庫來擴(kuò)充 YUI Grids,以提高交互性。您可以另外了解關(guān)于 YUI JavaScript 庫的更多信息。本文側(cè)重介紹 Grids 的樣式表,它可以獨(dú)立于 JavaScript 庫運(yùn)行。 YUI Grids 在許多方面都與 Blueprint 相似: 它使用一組可預(yù)測的基線樣式來簡化版面。 它定義了版式樣式。 它提供了許多預(yù)定定義的、適用于大多數(shù) Web 應(yīng)用程序的頁面布局。 YUI Grids 還定義了一組列式網(wǎng)格,您可以通過嵌入來創(chuàng)建任意復(fù)雜的頁面。 大約種 100 YUI Grids CSS 樣式可以劃分為三個類別,如 表 3 所示。 表 3. YUI Grids CSS 樣式類別
描述各種流行的、雙列頁面格式。通常,一列比另一列寬,分別提供主要內(nèi)容和導(dǎo)航功能。模板樣式還提供了一些變量來交換兩列的順序。控制兩個或多個 div 元素在一行中的顯示方式。內(nèi)嵌網(wǎng)格設(shè)置每個嵌入 div 的寬度,啟用浮動,以及控制何時開始和結(jié)束一行。 與 Blueprint 不同,內(nèi)嵌的網(wǎng)格樣式使用百分比來描述各組件的寬度。因此,當(dāng)頁面的寬度增加時,整個網(wǎng)格以及網(wǎng)格中的各個元素也在隨之增加。但是,網(wǎng)絡(luò)的組件始終維持相對大小,比如說 66% 和 33%。 圖 4 展示了一個通過嵌套實(shí)現(xiàn)的列布局。它的頂部和底部分別有一個頁眉和腳注。內(nèi)容區(qū)本身是一個含兩列的網(wǎng)格,每個列又劃分為一個兩列網(wǎng)格。 圖 4. 內(nèi)嵌網(wǎng)格的 YUI Grids 布局
使用 YUI Grids 構(gòu)建網(wǎng)頁 要使用 YUI Grids,Yahoo 推薦在 Web 瀏覽器中以嚴(yán)格的行為提供多個呈現(xiàn)模式。您可以在 HTML 文件的第一行中請求嚴(yán)格模式: !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 根目錄中,或者,如果只希望使用它的一部分特性,則可以下載它的各個組件。一個部分實(shí)現(xiàn)了重置(reset);另一個部分描述版式(typography);第三個部分定義網(wǎng)格元素(grid))。 與 Blueprint 相似,使用 YUI Grids 構(gòu)建的頁面必須擁有標(biāo)準(zhǔn)的組件,如 清單 7 所示。 清單 7. YUI Grids 的標(biāo)準(zhǔn)頁面組件 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" 是不固定的寬度。所有頁面寬度樣式都將內(nèi)容居中。 站點(diǎn)內(nèi)容應(yīng)該放置在 ID 為 bd 的 div 中。 內(nèi)容進(jìn)一步劃分為兩個 “塊”,一主一次,如 清單 8 所示。(可以根據(jù)需要再對塊進(jìn)行劃分,如 圖 4 所示)。 清單 8. 主塊和從塊 div id="bd" div id="yui-main" div /div /div
div /div /div yui-b 表示 “塊”,并且一個 YUI Grids 頁面中應(yīng)該始終有兩個塊。根據(jù)習(xí)慣,yui-main 一般顯示在左側(cè),除非您向最外面的 div 添加了一個類樣式以更改兩個列的順序。舉例來說, div id="doc" 將 180 像素的區(qū)域置于左側(cè)(否則應(yīng)位于最右側(cè))。 每個塊中都嵌入了一個風(fēng)格。每個網(wǎng)格可以包含一個或多個子網(wǎng)格,或者一個或多個 “單元”。清單 9 是用于構(gòu)建如 圖 4 所示的四列布局的 HTML 和相關(guān)的 CSS。 清單 9. 用于構(gòu)建如圖 4 所示的四列布局的 HTML 和相關(guān)的 CSS div id="outermost" div id="firstgrid" div /div div /div /div
div id="secondgrid" div /div div /div /div /div yui-g 代表 “網(wǎng)格”,而 yui-u 代表 “單元”。此處,outermost 網(wǎng)格(其名稱僅僅是為了在討論中便于區(qū)別)包括另外兩個網(wǎng)格:firstgrid 和 secondgrid。first 樣式指示新 “行” 的開始,或者網(wǎng)絡(luò)及單元的順序。實(shí)際的內(nèi)容將顯示在各個單元中。 默認(rèn)情況下,網(wǎng)格 —— 也就是 yui-g —— 在兩個單元之間是平均分配的。您可以修改它,方法是使用一個特殊的類來替換 yui-g。舉例來說,如果您希望將之前清單中的兩個網(wǎng)格繼續(xù)劃分為兩個單元,其中一個單元是另一個單元的兩倍寬度,可以編寫如 清單 10 所示的代碼。 清單 10. 將兩個網(wǎng)格繼續(xù)劃分為兩個單元,其中一個單元是另一個單元的兩倍寬度 div id="outermost" div id="firstgrid" div /div div /div /div div id="secondgrid" div /div div /div /div /div yui-gc 將兩個單元分別設(shè)置為可用寬度的 66% 和 33%。結(jié)果如 圖 5 所示。其他的變量請參見 YUI Grids 文檔。一個有趣的例外是網(wǎng)格樣式 yui-gb,它可以平均劃分三個 嵌入單元的空間。 圖 5. 修改 YUI Grids CSS 網(wǎng)格中的單元的布局