簡體   English   中英

CSS:沒有垂直列布局<table>

[英]CSS: Vertical column layout without <table>

好吧,我在2001年把html&css傾斜了。我習慣做這樣的事情(要創建一個帶有“垂直列”布局的網站):

<html>
<head>
    <title>Vertical-column layout</title>
</head>
<body>
<table id="doc" >
<!-- header -->
    <tr>
    <td id="header" colspan="3"><!-- header code/php include --></td>
    </tr>
<!-- / header -->

<!-- / content -->
    <tr>
    <td id="col1" name="menu"><!-- content code/php include --></td>
    <td id="col2" name="content_left"><!-- content code/php include --></td>
    <td id="col3" name="content_right"><!-- content code/php include --></td>
    </tr>
<!-- / content -->

<!-- footer -->
    <tr>
    <td id="footer" colspan="3"><!-- header code/php include --></td>
    </tr>
<!-- / footer -->
</table>
</body>
</html>

容易,一切都按照我想要的方式自動對齊,沒有css頭痛等等。那時候生活很美好。 然而,不久前,我讀到這種方法不應再使用了。 我打算嘗試使用一堆div的新方法,但w3c和w3c的驗證不喜歡你使用塊元素作為內聯元素... WTF !!!

所以...我的沮喪讓我問你們:

怎么樣? 如何以“現代方式”完成這樣的事情......盡可能簡單? html 5有更好的方法嗎?
為什么? 為什么現在我們不應該使用這種表格方法在網站上獲得“垂直列布局”?

HOW?

選項1:Google的“CSS 3列布局”。 在過去6年左右的時間里,這已經得到了很好的報道,並且有大量的教程。

選項2:Google“CSS框架”並選擇一個來構建您的布局。 960.gs是一個受歡迎的。

WHY?

理想情況下,您將表格用於表格數據,而css則用於布局頁面的其余部分。 為什么? 那么,理論上,CSS為您提供了更多的靈活性。 最好的例子可能是響應式網頁設計。 在iPhone上,我可能需要2列。 在我的iPad上,我可能需要4列。 這一切都可以通過CSS來完成,但如果使用表格硬連接HTML,則會變得非常復雜。

下面是我拼湊在一起的基本網格,您可以使用任何規模的網站。 您需要使用隱藏溢出或clearfix清除列上的浮動。 如果您的項目不需要支持IE7,您可以使用box-sizing邊框為您的列添加填充,否則在每列中添加一個額外的元素用於填充。

雖然我可以理解,使用表格制作列非常容易,但這對於布局來說幾乎是唯一的。

HTML:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

    <header></header>

    <div class="content grid">
        <div id="col1" class="col s1of3"></div>
        <div id="col2" class="col s1of3"></div>
        <div id="col3" class="col s1of3"></div>
    </div>

    <footer></footer>

</body>
</html>

CSS:

.grid {
}
    .grid .col { float: left; }

    .grid .col.s1of1 { width: 100%; }
    .grid .col.s1of2 { width: 50%; }
    .grid .col.s1of3 { width: 33.33333333%; }
    .grid .col.s2of3 { width: 66.66666666%; }
    .grid .col.s1of4 { width: 25%; }
    .grid .col.s3of4 { width: 75%; }
    .grid .col.s1of5 { width: 20%; }
    .grid .col.s2of5 { width: 40%; }
    .grid .col.s3of5 { width: 60%; }
    .grid .col.s4of5 { width: 80%; }

CSS3有一些簡潔的列布局選項,但它們的兼容性不是很好,並且大量瀏覽器不支持相當數量的選項。

如果您正在尋找可變/固定寬度的列,那么這可能是您正在尋找的文章:

http://www.alistapart.com/articles/holygrail

使用此方法,您可以將一個或多個div設置為固定寬度,同時適當調整其他大小以填充頁面。

如果您只想讓所有列都調整大小,那么只需將它們全部float: leftwidth: {percentage of page}%

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM