為什么不建議用table進行布局


本文部分內容轉載自:http://www.html5tricks.com/why-not-table-layout.html

剛剛接觸html的時候,利用table進行頁面布局是比較容易的。但是,在實際的項目開發過程中,我們不建議用table進行布局,原因如下:

  1. table比其它html標記占更多的字節。(造成下載時間延遲,占用服務器更多流量資源)
  2. table會阻擋瀏覽器渲染引擎的渲染順序。(會延遲頁面的生成速度,讓用戶等待更久的時間)
  3. table里顯示圖片時需要你把單個、有邏輯性的圖片切成多個圖。(增加設計的復雜度,增加頁面加載時間,增加http會話數)
  4. 在某些瀏覽器中,table里的文字的拷貝會出現問題。(會讓用戶不悅)
  5. table會影響其內部的某些布局屬性的生效(比如<td>里的元素的height:100%) (限制頁面設計的自由性)
  6. 一旦學了CSS的知識,你會發現使用table做頁面布局會變得更麻煩。(先花時間學一些CSS知識,會省去你以后大量的時間)
  7. ‘table對’對於頁面布局來說,從語義上看是不正確的。(它描述的是表現,而不是內容)
  8. table代碼會讓閱讀者抓狂。(不但無法利用CSS,而且會不知所雲,尤其在進行頁面改版或內容抽取的時候)
  9. table一旦設計完成就變成死的,很難通過CSS讓它展現新的面貌。(CSS ZEN GARDEN:http://www.csszengarden.com/

table的好處

在某些場合,使用table是完全合適、恰當和准確的。比如用table做表格。如果無法判斷是否應該使用table,請問自己幾個問題:

  • “是否這些行或者列的信息共享某一個屬性?比如每行顯示一個學生的信息,所有學生都有個‘姓名’屬性。”
  • “如果我改變了這些行或者列的順序,是不是依然有意義或者有同樣的效果?”
  • “如果我將行變成列或者將列變成行,是不是依然有意義或者有同樣的效果?”

如果答案僅僅是“我猜……也許不是”,那么就不應該用table。更多信息請參考“為什么用table布局不如HTML+CSS”。

不用table怎樣讓兩個span顯示在同一行

在進行HTML+CSS布局的時候,經常會遇到需要將控件(span、div等)放到同一行的情況,參考下面的代碼:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j"> 
<title>Insert title here</title> 
<style type="text/css"> 
    div { 
        width: 24px; 
        overflow-x:hidden; 
        white-space: nowrap; 
    } 

    span { 
        width: 15px; 
        display:inline-block; 
        border-style:solid; 
        border-width:1px; 
    } 
</style> 
</head> 
<body> 
    <div> 
        <span></span><span></span> 
    </div> 
</body> 
</html>
父層overflow-x:hidden可以避免當窗體大小發生改變時換行。這樣對div和span進行CSS控制后,就可以避免使用table的tr進行頁面布局,同時頁面代碼也更清晰。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM