我已经“继承”了一个网站,并且我正在维护它。然而,最近我注意到,虽然该站点在大多数主要浏览器(FF;IE 7、8、9;Chrome)中的行为都合理,但在 Opera 中却完全错误。
经过一番调查,我发现问题是<table>
Opera 中的 s 没有显示,特别是它们的计算样式包含:display: none;
. 这让我感到奇怪,因为我已经明确地包含在这个元素的样式中,这display: table;
也是默认的,并且在链接的样式表中,我看不到任何display: none;
可能导致表格不显示的地方。
所有其他提到的浏览器都有元素display: table;
的计算样式<table>
,即使它在样式表中没有明确显示。
下面提供了一个示例。在 Ubuntu 11.10 和 12.04 64 位下测试。已经确认在 Windows 下效果是一样的(FF、Chrome 和 IE 显示表格;Opera 不显示)。
在使用和不使用 HTTP 服务器(http://localhost/test1.html
和file:///var/www/test1.html
)的情况下进行了测试,两种浏览器都没有区别。
我毫不怀疑问题就在我这边,但我没有想法,任何帮助都将不胜感激。如果这是一个微不足道的问题或我(或原始开发人员)对 HTML 或 CSS 的误解,我深表歉意,我主要是一名 PHP 程序员。
我所经历的行为的最短示例是这样的:
test1.html
<html>
<head>
<title>Test</title>
<link rel="stylesheet" type="text/css" href="test.css" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<div class="menuItem">
<table class="menuItem"><tr bgcolor="black"><td>ASD</td></tr>
</table>
</div>
</body>
</html>
test.css
.menuItem {
content:"";
border: 2px green;
width: inherit;
height: 50px;
background-color: green;
}
table.menuItem {
content:"";
margin-left: auto;
margin-right: auto;
vertical-align: middle;
height: 50px;
text-align: center;
display: table;
}