採用DIV+CSS布局的好添加時間:2007-4-22
1、簡介:為何使用表格排版是不明智的?
表格之所以存在於 HTML 中,只是為了一個目的:顯示表格狀的資料。然而此後的 border="0" 使得設計師可以將圖片和文本放在這無形的網格中。迄今為止,表格仍然主導著視覺豐富的網站的設計方式,但它卻阻礙了一種更好的、更有親和力的、更靈活的,而且功能更強大的網站設計方法。
2、概覽:這對我有什麼用處?
我們將告訴你這樣一種工作方式,它會:
使你的頁面載入得更快
降低你的流量費用
讓你在修改設計時更有效率而代價更低
協助你的整個網站保持視覺的一致性
讓你的網站可以更好地被搜尋引擎找到
使你的網站對瀏覽者和瀏覽器更具親和力
在世界上越來越多人採用 Web 標準時,它還能 提高你的職場競爭實力 (事實上也就是降低失業的風險)。
3、表格帶來的問題
把格式資料混入你的內容中。
這使得檔案的大小無謂地變大,而使用者訪問每個 頁面時都必須下載一次這樣的格式資訊。
頻寬並非免費。
這使得重新設計現有的網站和內容極為消耗勞力 (且昂貴)。
這還使我們保持整個網站的視覺的一致性極難,花費也極高。
基於表格的頁面還大大降低了它對殘疾人和用手機或 PDA 瀏覽者的親和力。
4、過渡性的設計
使用 margin 和 padding 來代替多餘的表格單元和間隔 GIF。
使用 link 和 @import 來載入樣式。前者用於早期瀏覽器,後者給現在的瀏覽器。
<link href="basic.css" rel="stylesheet" type="text/css">
<style type="text/css" media="screen"><!--
@import url(modern.css) screen;
--></style>
5、結構化標記:所寫即所想,所想即所寫
即便書寫 CSS 很簡單,使用 CSS 來排版卻真的需要一種和我們以往有些不同的思維方式。
我們排版時考慮的不是“這個東西放在這兒,那個東西放在那兒”,而是頁面中資訊的類別和資訊的結構。
我們用 <h1> 標記來標示最重要的頭條;次一級的條目則用 <h2> 來標記,以此類推;而段落則放在 <p> 標記中。
這就是我們稱之為“結構標記”或“語義標記”的東西。
你的內容將不放在表格和表格元素中,取代它們的是 div 元素。還要給你的 div 元素安排一個 id 或 class,不過這是為了描述它們的內容或功能,而非它們的外觀。
當你把某個對象設為斜體時,大概要麼就是想強調它,要麼是想 引用某個書中標題吧? 如果是前者,應該用 <em>;如果是後者,其實得用 <cite>。
如果某個對象被標記為粗體,事實上它應該被標記的是, <strong>。
如果你希望在某處添加一個換行,這大概是開始了一個新的開頭。如果不是開頭,會不會是某種在你的網站中出現過的class (類型)?在上面兩種情況下,你都應該用 CSS 替換 <br>。
.foo {display:block}
考慮你需要導航的內容是一些無序的連結這種情況:
用 <ul> 標籤來編輯它們。
link1
link2
link3
link4
link5
水平導航條
我們可以用 CSS 來控制這個列表顯示在網頁上的外觀。
通過使用 display:inline 我們可以建立水平導航條。
link1
link2
link3
link4
link5
這是上面這個導航條用到的代碼:
#nav1{
margin-top: 1em;
margin-bottom: 0.5em;
}
#nav1 ul {
background-color: silver;
text-align: center;
margin-left: 0;
padding-left: 0;
border-bottom: 1px solid gray
}
#nav1 li {
list-style-type: none;
padding: 0.25em 1em;
border-left: 1px solid white;
display: inline
}
#nav1 li:first-child {
border: none;
}
垂直導航條
link1
link2
link3
link4
link5
這是垂直導航條的代碼:
#nav2 {
background-color: silver;
border: solid 1px gray;
width: 8em
}
#nav2 ul {
list-style-type: none;
margin: 0;
padding: 0;
border: none
}
#nav2 li {
margin: 0;
padding: 0.25em 0.5em 0.25em 1em;
border-top: 1px solid gray;
width: 100%;
display: block
}
html>body #nav2 li {
width: auto;
}
#nav2 li:first-child {
border: none
}
6、從玩弄表格技巧到遵循 Web 標準:通盤考慮
如果你已經把網站的內容分好了類,那麼是時候分析每個頁面,把它們按照邏輯關係進行分解了。
主導航條
子導航條
頁首與頁尾
內容
相關資訊
其他
注意分析由巢狀表格格、空白分隔字元和邊框元素組成的表格結構 (因為我們希望把它們替換為用 div 標記組織的那種簡單得多的表格結構)。
一旦你分析好頁面的結構,就可以著手揭開表象,分析你現在的頁面代碼中可以轉換成結構化標記的那些地方。
作為一個完美主義者,消滅所有的 <font> 標記和間隔 GIF 吧!
同樣的,一併搞定 <b> 和 <br> 標記。
去除表格中的那些外觀標記 (bgcolor, background, 等等)。
把純粹用來表示外觀的那些 CSS 調用 (比如 <span class="header">) 改成結構化的標記。
7、把描述外觀的標記改為描述結構的標記
你可以使用“尋找加替換”(或者Regex),不過最好的方法還是在瀏覽器裡開啟這個頁面,然後把文本複製粘貼到你的 HTML 編輯程式裡。
關鍵還是要用結構化的方式來思考!僅僅把 <b> 標記替換為 <strong> 是遠遠不夠的。
最重要的條目是哪個?用 <h1> 來標記它。次要一點的就用 <h2>,依此類推。用 <p> 來標記段落。把導航條標記為無序列表。
選定一個 DOCTYPE 來使用。(我們推薦 XHTML transitional,除非你是此道高手,否則別用 XHTML strict。)
8、把你的頁面合理分布在的 div 中
把你的主導航條放在一個 id 屬性設為 mainnav 的 div 中,子導航條則放在一個 id 或者 class 是 subnav 的 div 中。而頁尾類似這個形式:<div id="footer">,至於整個頁面,它被放在 <div id="content"> 裡邊。
即便現在它還不怎麼討人喜歡,但只要你開始給樣式表添加規則,它就會馬上變得可愛起來。
9、是開始自己編寫 CSS 的時候了
首先,給每個 div 設定一個邊界。例如: div {border: 1px dotted gray; padding: .5em} 這可以協助你完完整整地看到裡邊的內容,也不再需要捲動螢幕了。
首先為以定義的元素編寫 CSS (<html>, <body>, <p>, <h1>, <h2>, <ul>, <li>, 等等。)
盡量運用上下文相關或者有遞迴下降結構的選擇符。這可以使得你的標記更清晰。例如:#subnav li {border: 1px solid black; padding: .5em; display: inline} 將能夠只能影響你的子導覽列的 div 中的清單項目。
在儘可能多的瀏覽器下進行測試,畢竟你可以讓朋友協助你用它們自己的瀏覽器測試。