用于制作空单元格边框的CSS?

All*_*nde 72 css

即使单元格为空,我应该使用什么CSS来制作单元格的边框?

IE 7具体而言.

Gra*_*ant 59

如果我记得,除非它充满了某些东西,否则某些IE中不存在该单元格......

如果你可以放一个 (不间断的空间)填补空白,那通常会有效.或者您需要一个纯CSS解决方案?

显然,IE8默认显示单元格,你必须隐藏它empty-cells:hide但它在IE7中根本不起作用(默认隐藏).

  • 我不会这样做.添加<span style ='width:0px;'> </ span>.投入&nbsp; 放大后会导致Firefox出现问题. (12认同)
  • 纯CSS会很好.我已经有了nbsps,但感觉很脏.:) (4认同)
  • 据我所知,这是唯一的解决方案,这就是我们的工作. (2认同)
  • 哇,这是一个很棒的小提示wbkang. (2认同)
  • 这应该是正确的答案.. http://stackoverflow.com/a/5172978/638670 (2认同)

Ras*_*mus 44

另一种确保所有单元格中都有数据的方法:

   $(document).ready(function() {
      $("td:empty").html("&nbsp;");
    });
Run Code Online (Sandbox Code Playgroud)

  • 这很有效,因为你可以将它放在一个单独的"ie.js"文件中,以便通过条件注释包含它.在我的情况下,我不想改变我的后端IE浏览器显示错误. (5认同)
  • `&nbsp;`不是`&nbsp;` (3认同)

rpe*_*ich 31

如果将border-collapse属性设置为collapse,IE7将显示空单元格.它也会折叠边界,所以这可能不是你想要的100%

td {
  border: 1px solid red;
}
table {
  border-collapse: collapse;
}
<html> <head> <title>Border-collapse Test</title> <style type="text/css"> td {
  border: 1px solid red;
}
table {
  border-collapse: collapse;
}
Run Code Online (Sandbox Code Playgroud)
<table>
  <tr>
    <td></td>
    <td>test</td>
    <td>test</td>
  </tr>
  <tr>
    <td>test</td>
    <td></td>
    <td>test</td>
  </tr>
  <tr>
    <td>test</td>
    <td></td>
    <td>test</td>
  </tr>
  <tr>
    <td>test</td>
    <td></td>
    <td />
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)


ren*_*ozu 24

这个问题需要一个CSS解决方案,但是对于HTML解决方案的机会,这里有一个:

尝试将这两个属性添加到table元素: frame ="box"rules ="all", 如下所示:

<table border="1" cellspacing="0" frame="box" rules="all">
Run Code Online (Sandbox Code Playgroud)


All*_*nde 9

我刚刚发现了以下内容.它符合标准,但在IE中不起作用.叹.

empty-cells: show 
Run Code Online (Sandbox Code Playgroud)

  • 它确实可以在IE8中运行,所以只要给它大约十年,你就可以开始了. (5认同)
  • 好,已经十年了。不为我工作。:-) (2认同)

vol*_*ron 9

我碰巧遇到了这个问题,并没有看到任何真正解决这个问题的答案.

问题的结果是因为IE7没有看到该单元的任何内部内容; 在编程术语中,单元格null与大多数事物一样,您不能对其进行边界处理null或执行任何操作.浏览器需要具有布局的元素/对象,以便应用边框/布局.

即使是空的<div></div>或者<span></span>不包含内容,因此没有任何东西可以呈现,从而null再次导致这种情况.

但是,您可以通过提供空div/span布局属性来欺骗浏览器以认为单元格具有内容.最简单的方法是应用CSS样式zoom:1.

<table>
   <tr><td>Foo</td>
       <td><span style="zoom:1;"></span></td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)

这种解决方法比使用a更好&nbsp;,因为它不会不必要地弄乱屏幕阅读器,并且不会歪曲单元格的价值.在较新的浏览器中,您可以使用empty-cell:<show|hide>替代方案.


注意:代替Tomalak的评论,应该理解hasLayout与之无关null,它只是比较浏览器如何交互并呈现hasLayout类似于数据库或编程语言如何与空值交互.这是一个拉伸,但我认为这些程序员转向网页设计师可能更容易理解.


Bob*_*ack 5

理想情况下,表中不应包含任何空单元格.您有一个数据表,并且该特定单元格中没有数据(您应该用" - "或"n/a /"表示,或者同样合适的东西,或者 - 如果必须 - 或者按照建议使用),或者你有一个需要跨越一列或一行的单元格,或者你正试图用一个你应该使用CSS的表来实现一些布局.

我们可以有更多细节吗?


Voo*_*doo 5

这个问题很旧,但仍然是谷歌的最佳结果,所以我会添加我发现的内容:

只需添加border-collapse: collapse到表格样式就可以在IE7中修复此问题(并且不影响它们在FF,Chrome等中的显示方式).

&nbsp;当您可以使用CSS修复时,最好避免添加或其他间距元素的无关代码.