Vit*_*min 6 html css html5 firefox3.5 firefox3.6
以下网页将在Firefox 3.5中以意外结果呈现.第一个<address>元素不会有粉红色背景,但第二个元素将不会.这只发生在我身上吗?我的代码不正确吗?或者这是一个错误?
编辑:这也发生在Firefox 3.6中
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Firefox 3.5 bug!</title>
<style>
address
{
background: pink;
}
</style>
</head>
<body>
<address>
<ul>
<li>This will NOT have a pink background in Firefox 3.5</li>
</ul>
</address>
<address>
<p>But this will</p>
</address>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在你的HTML或浏览器中,这不是一个真正的错误.更多的是你正在使用HTML5和Firefox 3.x没有足够的HTML5识别.
在HTML 4.01中,Address元素定义为:
<!ELEMENT ADDRESS - - (%inline;)* -- information on author -->
Run Code Online (Sandbox Code Playgroud)
所以它只允许内联内容.<ul>不是内联内容,因此Firefox 3.x在其破坏的标记处理规则中决定不允许它<ul>在内部<address>.
在HTML5之前,错误处理行为没有标准化,其他浏览器选择了不同的错误处理行为,允许它<ul>在内部<address>.
当HTML5出现时,它改变了有效性规则,因此,地址元素定义为:
4.4.10 The address element
Content model:
Flow content, but with no heading content descendants, no sectioning
content descendants, and no header, footer, or address element descendants.
这<ul>在内部是有效的<address>,因此HTML5解析规则被定义<ul>为<address>将由解析器放置在元素内.
Firefox 4及更高版本使用HTML5解析器,因此不会出现问题.
故事的寓意是,不要指望旧的浏览器支持你的现代标记.
| 归档时间: |
|
| 查看次数: |
259 次 |
| 最近记录: |