首页 > 为什么行内元素a可以包裹div这种块级元素?

为什么行内元素a可以包裹div这种块级元素?

span就报不了div啊


http://www.w3.org/TR/html5/text-level-semantics.html#the-a-element
a 是 transparent,意思取决于 a 的父元素是否允许包含块级元素,如:

<div><a><div></div></a></div>

是允许的,而:

<p><a><div></div></a></p>

是不允许的。


从XHTML标准的定义来说,不论是a还是span的内部都是不能放快元素的
你说的牵涉到使用哪种 文档类型定义 (DTD)
xhtml strict下 ,在没有额外css的描述下,内联元素完全无法嵌套块级元素
xhtml Transitional下面 ,这种嵌套被接受 ,但是具体的表现行为被浏览器所解释
事实上 一个标签的默认属性可以被display属性更改 ,如果a的display属性更改为 block或者 inline-block 那么就可以嵌套了 ,默认情况下是不行的


@make 对于html5时期的规则引用是正确的。

html4阶段,即使是最宽松的http://www.w3.org/TR/html4/loose.dtd里,也这样定义:

<!ELEMENT A - - (%inline;)* -(A)       -- anchor -->

a只允许嵌套非a的inline类型元素。

补充说明一下,嵌套规则跟元素语义有关,跟doctype声明有关,跟元素最终呈现的css display无关。


标签a是行内元素,标签div是块级元素。
没有必要用行内元素包括块级元素。


标准是不行的,但浏览器可能认
补2个链接
http://www.junchenwu.com/2007/01/allowed_nesting_of_elements_in_html_4_strict_and_xhtml_10_strict.html
http://.com/q/1010000000692603

【热门文章】
【热门文章】