用CSS實現“表格布局”


  當我們進行浮動布局時,會發現存在着非浮動元素與浮動元素的底部難以對齊的情況,這就是浮動布局的缺陷。因此,過去的前端工作者曾利用<table>以實現“表格布局”。因為表格中同一行的單元格行高總是一致的,所以“表格布局”可以避免“浮動布局”時出現的“底部對不齊”情況,下面是經典的利用<table>實現“雙欄布局”的框架:

<table>
    <tr>
        <td>
            <!--左側欄內容-->
        </td>
        
        <td>
            <!--右側欄內容-->
        </td>
    </tr>
</table>

  但是隨着HTML5的到來,HTML標簽越來越強調“語義化”,即合理使用HTML標記以及其特有的屬性去格式化文檔內容。因此,利用<table>來實現“表格布局”是不推薦的,因為此時<table>中的內容並不是一個真的“表格”,不符合“語義化”的追求。那么,在追求語義化的時代,該如何實現傳統的“表格布局”呢?那就是借助CSS來實現。

  利用CSS來實現“表格布局”很簡單,第一步是把傳統<table>布局中的<table>、<tr>、<td>改為合適的、符合“語義化”的標簽,比如說上面的“雙欄布局”改成這樣:

<main>
    <section>
        <aside>
            <!--左側欄內容-->
        </aside>
        
        <article>
            <!--右側欄內容-->
        </article>
    </section>
</main>

  然后為這些標簽添加對應的display屬性:

<main style="display:table">
    <section style="display:table-row">
        <aside style="display:table-cell">
            <!--左側欄內容-->
        </aside>
        
        <article style="display:table-cell">
            <!--右側欄內容-->
        </article>
    </section>
</main>

  其實將上述代碼與傳統<table>布局的代碼一對比,可以看出,變化之處就是:

  替換掉<table>的<main>有了一個“display:table”樣式

  替換掉<tr>的<section>有了一個“display:table-row”樣式

  替換掉<td>的<aside>和<article>分別有了一個“display:table-cell”樣式。

 

  用CSS來替代<table>進行“表格布局”的思路是基本一致的,只是進一步將頁面的結構與表現分離開來,這樣做最大的好處就是可以使HTML標簽盡量做到“語義化”。


免責聲明!

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



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