【问题标题】:Table inside div not displayed in Operadiv中的表格未在Opera中显示
【发布时间】:2012-08-16 15:35:54
【问题描述】:

我已经“继承”了一个网站,并且我正在维护它。然而,最近我注意到,虽然该网站在大多数主要浏览器(FF;IE 7、8、9;Chrome)中表现良好,但在 Opera 中却完全错误。

经过一番调查,我发现问题是Opera中的<table>s没有显示,特别是它们的计算样式包含:display: none;。这让我感到奇怪,因为我已明确包含在此元素的样式中 display: table; 这也是默认值,并且在链接的样式表中,我看不到任何可能导致表格不显示的 display: none; .

所有其他提到的浏览器在 <table> 元素的计算样式中都有 display: table;,即使它没有在样式表中明确显示。

下面提供了一个示例。 在 Ubuntu 11.10 和 12.04 64 位下测试。已经确认在Windows下效果是一样的(FF、Chrome、IE显示表格;Opera不显示)。

在使用和不使用 HTTP 服务器(http://localhost/test1.htmlfile:///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;
}

【问题讨论】:

  • content:""; 声明是怎么回事?这是一个 CSS 属性,只能与 :before:after 伪选择器一起使用。尝试删除这些,看看会发生什么。
  • 我认为这是一个 Opera 错误,请在 Opera 网站上报告 :)

标签: html css html-table opera


【解决方案1】:

我自己尝试过,如果您从两个样式声明中删除 content: "",一切正常。

【讨论】:

  • 谢谢,这确实解决了问题。该属性(我认为)应该是清除样式表的一部分,它是如何到达那里的还是个谜。
【解决方案2】:

Opera 似乎决定不遵循CSS Level 2 which states that content only applies to :before and :after pseudo-selectors 的规范

从两种样式声明中删除 content:""; 可以在 Opera 中修复此问题。

附: IE7 遵守标准而 Opera 不遵守标准,我们生活在疯狂的时代

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-07-18
  • 1970-01-01
  • 2014-01-27
  • 2014-11-05
  • 1970-01-01
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
相关资源
最近更新 更多