2011-06-23 49 views
3

想知道爲什麼下面的HTML不起作用。基本上,當過我設置行跨度上的錶行,IE似乎忽略了,我已經設置的高度:使用行時,IE設置行高不起作用

<table border="1" cellpadding="0" cellspacing="0" width="100%"> 
 
    <tr> 
 
    <td height="20">A</td> 
 
    <td align="center" rowspan="3"> 
 
     Test 
 
     <br />Test 
 
     <br />Test 
 
     <br />Test 
 
     <br />Test 
 
     <br />Test 
 
     <br />Test 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td height="20">B</td> 
 
    </tr> 
 
    <tr> 
 
    <td>C</td> 
 
    </tr> 
 
</table>

有誰知道爲什麼它的行爲這樣?

+0

我相信如果你必須使用表格,有兩個主單元格,然後在主表格的左側單元格中放置一個有三行(每個單元格)的表格將更有意義。您可以根據需要爲第二個表設置行的高度。 –

+0

我想過這個,但用戶需要能夠從表中複製一個粘貼到word/excel,它只是工作...因此,在單元格中嵌套的表/ div並不是一個真正的選擇... :( –

回答

2

我相信這裏發生的事情是,IE將傳播剩餘的可用空間,以填充橫跨所有三行的第一個TR中的第二個TD的高度。

考慮這個例子:

<table border="1" cellpadding="0" cellspacing="0" width="100%"> 
 
    <tr height="30px"> 
 
    <td> 
 
     A 
 
    </td> 
 
    <td align="center" rowspan="3"> 
 
     Test 
 
     <br />Test 
 
     <br />Test 
 
     <br />Test 
 
     <br />Test 
 
     <br />Test 
 
     <br />Test 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td height="60px"> 
 
     B 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td height="100%"> 
 
     C 
 
    </td> 
 
    </tr> 
 
</table>

這裏我們看到IE正確呈現因爲60像素+ 30像素=<秒柱的總高度,從而我們告訴最終TD是高度100%爲了獲取剩餘的空間,IE不會在行之間傳播。

我試了幾個不同的測試案例,似乎證明了這一點。首先承認雖然我可能是錯的。

+0

我注意到B沒有渲染可能預期的正確高度......奇怪的是,如果你只是跨越2個單元格,第三個*必須被添加,這是行不通的。 – marksyzm

+0

原來是這樣反正不管用......我只是一遍又一遍地得到同樣的東西,你給的例子也不起作用,因爲第一行的高度是56像素,第二行是75像素。何哼。 – marksyzm