设置“visibility:hidden”时,为什么Google Chrome中的表格单元边框会消失和“边界崩溃:崩溃;”?

时间:2011-06-24 14:53:01

标签: html css google-chrome html-table

我正在尝试使用CSS设置HTML表的样式。我需要能够通过CSS隐藏单个单元格的内容,因为在打印布局(或任何其他样式表)中,它们的内容必须是可见的。 该表格有一个<thead>和一个<tbody>部分,每个部分<tr><th><td>都有一个边框适用于它们我隐藏的东西,边界(甚至是外边界)将永远显示出来。

在我的样式表中,我设置border-collapse: collapse;并使用visibility:hidden;隐藏我要隐藏的单元格,这在大多数浏览器上都可以正常工作,除了谷歌浏览器(以及Firefox中的一些小显示故障,但我假设它们来自宽度的百分比..)。

我还创建了一个这种行为的例子:

table.example {
  width:100%;
  border-collapse: collapse;
}

table.example td{
  padding: 2px;
}

table.example .number {
  text-align:right;
}

table.example .null{
  visibility:hidden;
}

table.example .number.negative{
  color:red;
}

table.example .Date{
  text-align:center;
}

table.example th{
  background-color: #dedbde;
}

table.example, th.example, td.example,.example thead,.example tbody{
  border: 1px solid #a5a6a5;
}

#Demo1 .hideme.Col1,
#Demo1 .hideme.Col2 {
  visibility:hidden;
  border: 0;
}

#Demo1 {
  width: 50%;
}

.Col1 {
  width: 4%;
}

.Col2, .Col3,  .Col4  {
  width: 32%;
}
<table class="example" id="Demo1">
  <thead>
    <tr class=" example">
      <th class="Col1 example"></th><th class="Col2 example">Title1</th><th class="Col3 example">Title2</th><th class="Col4 example">Title3</th>
    </tr>
  </thead><tbody>
  <tr class="r1 example odd first">
    <td class="Col1 example"><img src="image.png" alt="test" height="15px" width="15px"></td><td class="Col2 example"><a href="#" class="detaillink">        2865             </a></td><td class="Col3 example Date">10.06.2011</td><td class="Col4 example Date">10.07.2011</td>
  </tr><tr class="r2 example even">
  <td class="Col1 example"><img src="image.png" alt="test" height="15px" width="15px"></td><td class="Col2 example"><a href="#" class="detaillink">        2864             </a></td><td class="Col3 example Date">10.06.2011</td><td class="Col4 example Date">10.07.2011</td>
  </tr><tr class="r3 example odd">
  <td class="Col1 example hideme"><img src="image.png" alt="test" height="15px" width="15px"></td><td class="Col2 example hideme"><a href="#" class="detaillink">        2863             </a></td><td class="Col3 example hideme Date">10.06.2011</td><td class="Col4 example hideme Date">10.08.2011</td>
  </tr><tr class="r4 example even">
  <td class="Col1 example"><img src="image.png" alt="test" height="15px" width="15px"></td><td class="Col2 example"><a href="#" class="detaillink">        2863             </a></td><td class="Col3 example Date">10.06.2011</td><td class="Col4 example Date">10.08.2011</td>
  </tr><tr class="r5 example odd">
  <td class="Col1 example"><img src="image.png" alt="test" height="15px" width="15px"></td><td class="Col2 example"><a href="#" class="detaillink">        2299             </a></td><td class="Col3 example Date">10.05.2011</td><td class="Col4 example Date">10.06.2011</td>
  </tr><tr class="r6 example even">
  <td class="Col1 example null"></td><td class="Col2 example null"></td><td class="Col3 example Date null"></td><td class="Col4 example Date null"></td>
  </tr><tr class="r7 example odd">
  <td class="Col1 example"><img src="image.png" alt="test" height="15px" width="15px"></td><td class="Col2 example"><a href="#" class="detaillink">        1249             </a></td><td class="Col3 example Date">10.03.2011</td><td class="Col4 example Date">10.04.2011</td>
  </tr><tr class="r8 example even">
  <td class="Col1 example"><img src="image.png" alt="test" height="15px" width="15px"></td><td class="Col2 example"><a href="#" class="detaillink">        1248             </a></td><td class="Col3 example Date">10.03.2011</td><td class="Col4 example Date null"></td>
  </tr><tr class="r9 example odd">
  <td class="Col1 example"><img src="image.png" alt="test" height="15px" width="15px"></td><td class="Col2 example null"></td><td class="Col3 example Date">10.02.2011</td><td class="Col4 example Date">10.03.2011</td>
  </tr><tr class="r10 example even last">
  <td class="Col1 example"><img src="image.png" alt="test" height="15px" width="15px"></td><td class="Col2 example"><a href="#" class="detaillink">         563             </a></td><td class="Col3 example Date">10.02.2011</td><td class="Col4 example Date">20.03.2011</td>
  </tr>
  </tbody>
</table>

正如您所看到的,如果您尝试使用此代码,它甚至会将所有单元格的行折叠到一个小空间。

这个问题对我当前的项目并不是很关键,因为大多数用户都会使用Internet Explorer,但由于我找不到任何解决方案,这个问题可能在将来影响我(我确定其他人已经遇到过这个问题),我真的很想知道为什么会这样。

2 个答案:

答案 0 :(得分:0)

更新1

如果你的TD只显示文字,你可以尝试这个

  

文本缩进:-9999px;

不确定浏览器兼容性,它应该只影响内联元素。无需删除此处的可见性。


在每个单元格中放置一个div,此div将包含您单元格中现有的元素,然后将visibility:hidden设置为该div。

实施例

<tr class="r2 example even">
  <td class="Col1 example">
    <div>
      what you want to hide here...
    </div>
  </td>
</tr>

答案 1 :(得分:0)

设置tr和td的边框似乎可以解决它。

.collateral-tabs .std tr,
.collateral-tabs .std td {
    border: 1px solid #333;
}