2011-06-23 45 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