2012-10-25 24 views
3

聲明:我通常不使用表格來佈局,但它們似乎是html電子郵件的最佳選擇。相信我,在電子郵件中玩divs 糟透了。我在尋找最好的解決辦法,我 沒有太多的限制,以如何設計...如何製作一張有3列,2列和1列填滿整個桌子的桌子?

我幾乎沒有,但我有下面的代碼有問題:

<table border=1 width="600px"> 
    <tbody> 
    <tr height="140px"> 
     <td width="210px"></td> 
     <td width="180px"></td> 
     <td width="210px"></td> 
    </tr> 
    <tr height="200px"> 
     <td colspan="3"></td> 
    </tr> 
    <tr height="100px"> 
     <td colspan="3"></td> 
    </tr> 
    <tr height="300px"> 
     <td width="300px"></td> 
     <td></td> 
    </tr> 
    </tbody> 
</table> 

jsfiddle

我的具體問題是與最後一個細胞,我想他們將各佔50%來劃分表空間。

正如你可以看到我修改的最後<td>的寬度爲300像素的(表的一半),但也修改了第一個單元格,這是一個令人失望的結果的寬度,我想前三td保持即210px,180px,210px的比例。

以防萬一,使之顯得更加清晰這裏是一個草圖:

enter image description here

回答

1

你不能用一個表來做到這一點。列將始終排列。如果這是針對其他內容的佈局,那麼您確實需要查看基於div的佈局。

如果必須使用表:

<table border=1 width="600px"> 
    <tbody> 
     <tr height="140px"> 
      <td width="210px"></td> 
      <td width="180px"></td> 
      <td width="210px"></td> 
     </tr> 
     <tr height="200px"> 
      <td colspan="3"></td> 
     </tr> 
     <tr height="100px"> 
      <td colspan="3"></td> 
     </tr> 
     <tr height="300px"> 
      <td colspan="3"> 
       <table> 
        <tr> 
         <td width="300"></td> 
         <td width="300"></td> 
        </tr> 
       </table> 
      </td> 
     </tr> 
    </tbody> 
</table> 
+0

不是真的有可能,我知道表吸吮:)但這是一個HTML電子郵件佈局...沒有解決方法? – Trufa

+0

不,因爲底行中的兩個單元格之一需要跨越兩列「colspan = 2」。但是這總是會導致該單元格跨越與包含全部三列的行跨越的兩個單元格相同的寬度。 –

+0

雖然...讓我發表一個答案 –

-1

的DIV將在這裏更好的解決方案。你確定你需要一張桌子嗎?也許,divs?

+0

不是一個真正的可能性,我知道表吸吮:)但這是一個HTML電子郵件佈局...沒有解決方法? – Trufa

+0

這不是一個答案。而btw表格仍然是電子郵件的後向標準 –

+0

@MattWhipple您有使客戶兼容電子郵件的經驗嗎?你會建議什麼? – Trufa

3

如果你必須使用一個表 - 你真的shoudldn't,除非你是displaing表格數據 - 在這裏再解決,在我看來,就是讓頂部一行一個單元格,並在其中嵌入另一個表格,具有儘可能多的單元格寬度。因此:

<table> 
<tr><td colspan="2"> 
    <table><tr> 
     <td width="210"></td> 
     <td width="180"></td> 
     <td width="210"></td> 
    </tr></table> 
</td></tr> 
<tr><td colspan="2"></td></tr> 
<tr><td colspan="2"></td></tr> 
<tr><td width="50%"></td><td width="50%"></td></tr> 
</table> 
+0

我怎麼得到一個downvote文字瞬間我發佈答案? :( – Eamonn

+0

對不起,點擊太快了,我認爲你的代碼錯了,但現在看到你做了我所做的事,只能倒退 –

+0

不知道,是不是我:)我會在一分鐘內檢查你的答案但我不認爲它真的有效,因爲它也會改變第一個「td」寬度。會回來 – Trufa

1

創建一個表格,其中每列代表每個可能的分區,然後廣泛使用colspans。所以你有可能休息210,300,490,& 600共4列。

然後你會想在第一行跨越1,2,1,所有的全長跨越4,然後將各佔一半跨越2和2

+0

+1適應性解決方案 – Eamonn

+0

不錯,我會試一試! – Trufa

+0

應該注意的是,這個想法大致類似於使用CSS網格佈局進行響應式設計的想法:您可以定義具有相當小的定義塊大小的固定寬度列(在這種情況下,50px可以正常工作),然後每個單元格可以跨越適當數量的列以達到所需的寬度。這相當於現有的實踐改造舊技術,並提供了大致相同的用途。 –