2011-06-02 44 views
3

我有一个结构如下:Can <a>包含HTML5中的<footer>?

<a href="#"> 
    <footer> 
    <p>Some text</p> 
    <h2>A Heading</h2> 
    </footer> 
</a> 

运作方式及预期,除了Firefox 3.6的所有浏览器(甚至IE6与HTML5shiv.js)显示器。在Firefox 3.6中,显示器已完全拧紧,如果您使用Firebug检查DOM,则<footer>元素为空,并且其内部的元素不在其中。

所有标签都正确关闭。在CSS中,<a>设置为display:block

W3C验证程序验证文档并且不会将此结构标记为不正确。

该规范声明当包含其他流内容时,<a>元素可被归类为流内容。 <footer>是流量内容。

难道Firefox 3.6并没有完全正确地呈现HTML吗?

修复的任何想法?

Ta!

+2

我没有资源,但我记得读到,作为HTML5的一部分,锚元素现在可以包装块级元素。编辑:我刚刚测试了上面的代码http://validator.w3.org/check,它是有效的。 – Seth 2011-06-02 12:49:41

回答

3

根据W3C HTML5 ReferenceFooter Elements内容模型是:

流量的内容,但没有标题 内容子孙,没有切片 内容的后裔,也没有页脚 元素子孙。

哪一个a元素是interactive content。(也可以是Flow Content

因此,使用a元素将验证,如果验证其对HTML5标准。使用类似W3C validator

所以要回答你的问题,FireFox 3.6完全不符合HTML5标准。 FireFox 4.0比3.6更好。您可以找到旧版浏览器here支持哪些HTML5(和CSS3)元素的列表。

至于修复我建议你隐藏Firefox的页脚,并显示一个div与你的内容隐藏的一切,但Firefox。我会完成这个使用jQuery CSS Browser Detection using jQuery instead of Hacks是一个很好的开始。

1

Firefox 3.6未实现HTML5解析算法;它基本上有一个HTML4“解析器”。

我觉得你的解决方法选项:页脚里面

  1. 避免“块级” HTML标签。
  2. <span>作为<a>的孩子包装<footer>
  3. <div>作为<a>的孩子包装<footer>
相关问题