即使单元格为空,我应该使用哪种CSS来显示单元格的边框?
IE 7特别。
Answers:
如果我还记得的话,除非在某些IE中存在该单元格,否则它不存在...
如果您可以放置一个
(不间断的空格)来填补空白,那通常会起作用。还是您需要纯CSS解决方案?
显然,IE8默认显示单元格,您必须使用隐藏它,empty-cells:hide
但是在IE7中它根本不起作用(默认情况下是隐藏的)。
确保所有单元中都有数据的另一种方法:
$(document).ready(function() {
$("td:empty").html(" ");
});
如果将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;
}
<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>
这个问题要求使用CSS解决方案,但是在偶然情况下可以使用HTML解决方案,这里是一个:
尝试将这两个属性添加到表元素中: frame =“ box” Rules =“ all”, 如下所示:
<table border="1" cellspacing="0" frame="box" rules="all">
我刚发现以下内容。它符合标准,但在IE中不起作用。叹。
empty-cells: show
我碰到了这个问题,还没有看到任何真正解决该问题的答案。
由于IE7看不到该单元格的任何内部内容,因此出现了问题。用编程术语来说null
,像元是由a生成的,并且像大多数事物一样,您不能将a边界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>
这种解决方法比使用更好
,因为它不会不必要地弄乱屏幕阅读器,并且不会错误地表示单元格的值。在较新的浏览器中,您可以使用empty-cell:<show|hide>
替代方法。
注意:代替Tomalak的评论,应该理解hasLayout与无关null
,它仅仅是浏览器如何交互和呈现hasLayout的比较,类似于数据库或编程语言如何与null交互。这是很大的努力,但我认为对于那些成为Web设计人员的程序员而言,它可能更容易理解。
null
类比我并不完全相信。
color:blue;color:red;
),则其中一些使用第一个读取设置(blue
),而另一些使用最后一个设置(red
)。不管是否存在边界问题,这些问题都可能会受到影响border-collapse
。由于所有这些特质,很难确定您的情况可能会发生什么。
理想情况下,表中不应有任何空单元格。您有一个数据表,并且该特定单元格中没有数据(应使用“-”或“ n / a /”或同等适当的值来指示,或者-如果必须-则建议) ),或者您的单元格需要跨越一列或一行,或者您试图使用应该用于CSS的表格来实现某些布局。
我们可以详细一点吗?
仅空单元修复的Firefox(是的,我确实在Firefox中确实存在此问题)IE 7和8仍然有问题。
这在Firefox 3.6.x,IE 7和8,Chrome和Safari中都对我有用:
=============================
table {
*border-collapse: collapse;}
.sampleTD {
empty-cells: show;}
=============================
必须使用*来确保表格样式仅应用于IE浏览器。
我创建一个div样式,该样式具有与单元格背景相同的字体颜色,并编写任何内容(通常为“-”,“ n / a”或“ empty”)以提供单元格内容。如果突出显示该页面,则会显示该页面,但是正常查看时会显示您想要的样子。
由于IE8已经发布,因此在这种情况下,“ IE”不再是一个有用的术语。
IE7总是执行“ empty-cells:show”(或者告诉我... Vista)。IE8在其任何“ Quirks”或“ IE7 Standards”模式下始终执行“ empty-cells:hide”。IE8在“标准”模式下默认为“ empty-cells:show”,并通过CSS支持该属性。
据我所知,其他所有浏览器都已经正确地支持了几年(我知道它是在Firefox 2中添加的)。