我怎样才能使“显示:阻止”工作在IE浏览器的<td>?

有什么我可以做IE浏览器显示表单元格为实际块?

鉴于这种风格:

table,tbody,tr,td,div { display: block; border: 1px solid #0f0; padding: 4px; } 

和这个html:

 <table> <tbody> <tr> <td>R1C1</td> <td>R1C2</td> <td>R1C3</td> </tr> </tbody> </table> <div> <div> <div> <div>R1C1</div> <div>R1C2</div> <div>R1C3</div> </div> </div> </div> 

该表格与Firefox和Safari / Chrome中的嵌套div完全相同。 但在Internet Explorer(8)中,属性display: block没有任何效果。 表格完全呈现,就好像我没有设置该属性。

我的主要问题是细胞不会破裂; 他们都在一条线上呈现。 ( tbodytr元素没有边界,也没有填充,但是现在对我来说不是问题)。

search时,我没有发现任何有关这个问题的信息。 在quirksmode和其他地方的兼容性图表display: block IE自5.5版起支持display: block 。 任何关于表格显示问题的讨论似乎都是在做相反的事情 – 给予非表格元素的任何display: table-*属性。

所以再一次,有什么我可以做IE来渲染表格单元格块吗?

(真正的表格实际上是一张表格,里面有表格数据,我想保持这种状态,并且不加扰动地重新设置它。)

我应用了float: left 东西 。 它有点作品。

现场演示

最大的问题是width: 100%padding相结合使得东西太宽。

所以:
现场演示 (没有问题的padding

这看起来好一点,但我不知道如何在任何地方轻松地添加padding ,如果你需要它。


这在IE7中失败 – > 悲惨地 < – 它只是不会超过事实,它是一个<table> ),即使你不关心IE7,它将需要调整你的用例(如果它可以使用)。

IE7:

在这里输入图像说明

以下为我工作的IE6 +:


 tr {
  显示:块;
  位置:相对
 }

 td.col1 {
  显示:块;
  左:0;
  顶部:0;
  身高:90px;
 }

 td.col2 {
  显示:块;
  位置:绝对;
  左:0;
  顶部:30px;
 }

 td.col3 {
  显示:块;
  位置:绝对;
  左:0;
  顶部:60px;
 }

假设:

  • 单元格高度30px

缺点:

  • 固定细胞高度
  • top属性的繁琐规格(可能会生成)
  • 仅当HTML为列提供类时才起作用

优点:

  • 适用于所有浏览器。

何时使用:

  • 当你没有控制HTML,但有控制CSS。 一些托pipe的付款解决scheme浮现在IFRAME中,并提供自定义样式表。

只是想到了我的一个同事。

尽pipe我强烈build议不要一直支持IE8! 由于您正在促进使用不受支持的和当前不安全的产品,而这种产品不符合当前的标准和技术。 告诉用户升级并给他们一些浏览器下载链接可供select。

话虽如此。 下面的CSS是您需要在Internet Explorer 8中修复它的最小css。

 table { width: 100%; } td { float: left; width: 100%; } 
 <table> <tbody> <tr> <td>cell-1</td> <td>cell-2</td> </tr> </tbody> </table> 

添加以下代码:

 <!DOCTYPE html>