Html 包裹A或包裹P

Html 包裹A或包裹P,html,Html,在html中创建链接的最佳方法是什么 我主要使用html4,但我正在尝试实现html5 所以我的问题是包装标签应该是什么,p还是a 这: 或者这个: <a href="#"> <p class="center"> <img src="addToCart.png"> </p> </a> 谢谢。在HTML4.1下,默认

在html中创建链接的最佳方法是什么 我主要使用html4,但我正在尝试实现html5

所以我的问题是包装标签应该是什么,p还是a

这:

或者这个:

        <a href="#">
            <p class="center">
                <img src="addToCart.png">
            </p>
        </a>


谢谢。

在HTML4.1下,默认情况下
a
元素
display:inline
不能包含块级元素,例如
p
;因此
p
应该包装
a


但是,如果您使用的是HTML5,并且有
,那么任何一种方法都是可以接受的(并且是有效的),因此请使用您认为最符合要求的方法。

锚定只能包含内联元素(span、strong、em等)。段落标记是块标记,因此无效。设置display:inline,它肯定会工作,但不再有效

你的第一个例子是正确的

如上所述=这仅适用于html4。

规范

规格

综上所述,以上两项都可以使用,并且都是有效的
有一个透明的内容模型(排除其他交互内容除外),因此它几乎可以包装任何内容
以“短语内容”为模型,并且
属于短语内容类别<代码>也在“语法内容”中


因此,你的两个例子都是完全正确的。这完全取决于您具体想做什么。

请不要按照David的回答,这只适用于HTML 4。在HTML5中,
@david thomas-True enough的内容限制这是HTML5刚刚铺好道路的地方之一。这只是对已经支持的内容的标准化;但我故意在简单有效性的问题上停下来;浏览器(几乎是最终的)宽容,所以虽然理解/支持无效HTML,但它仍然无效。即使它能够运行。这会影响的tabindex吗?它不应该影响,因为
p
不是交互式元素(除非JavaScript添加了功能,或者使用了
contentEditable
属性来允许),并且不应该接收焦点。
        <a href="#">
            <p class="center">
                <img src="addToCart.png">
            </p>
        </a>