在锚里放一个div是正确的吗?

在锚里放一个div是正确的吗?

我听说在内联元素中放置块元素是HTML的罪过:

<a href="http://www.mydomain.com"><div>What we have here is a problem. 
You see, an anchor element is an inline element,
and the div element is a block level element.</div></a>

但是如果你把外面的锚设计成display:block在样式表里?还错吗?HTML 4.01规范块级和内联元素似乎是这样认为的:

样式表提供了一种方法来指定任意元素的呈现,包括元素是以块形式呈现还是以内联形式呈现。在某些情况下,例如列表元素的内联样式,这可能是适当的,但总的来说,作者不鼓励以这种方式覆盖HTML元素的传统解释。

有没有人对这个问题有进一步的建议?


绝地无双
浏览 615回答 4
4回答

一只甜甜圈

取决于您要迎合的HTML版本:HTML 5国家<a>元素“可以环绕整个段落、列表、表等,甚至整个部分,只要没有交互内容(例如按钮或其他链接)”。HTML 4.01指定<a>元素只能包含内联元素。一个<div>是块元素,因此它可能不会出现在<a>.当然,您可以随意地将内联元素样式设置为出现作为一个块,或者实际上是一个块的样式,这样它就可以内联地呈现。术语的使用inline和block在HTML中,元素与文档的语义结构之间的关系,而CSS中的相同术语则更多地与元素的可视化样式有关。如果以块的方式显示内联元素,那就好了。然而,当CSS不存在时,您应该确保文档的结构仍然有意义,例如,通过屏幕阅读器等辅助技术访问时,或者是在由强大的Googlebot检查时。

偶然的你

不,它不会验证,但是的,它通常会在现代浏览器中工作。尽管如此,在你的锚内使用一个跨度,然后设置。display: block在它上,它肯定会在任何地方工作,它将验证!

慕娘9325324

本文件中的关键词“必须”、“不得”、“要求”、“应”、“不”、“建议”、“可”和“可选”应解释为[RFC 2119]所述。但是,为了可读性,这些单词并不会出现在本规范中的所有大写字母中。考虑到这一点,我相信最后的声明是在7.5.3块级和内联元素,上面写着通常,内联元素可能只包含数据和其他内联元素。条件“一般”似乎引入了足够的模糊性,例如HTML 4.01确实允许内联元素包含块元素。当然,CSS 2有一个显示属性值,内嵌块,这似乎符合你所描述的目的。我不确定它是否得到了广泛的支持,但似乎有人预见到了这种行为的必要性。DTD在这里似乎不那么宽容,但是DTD案文服从规范:HTML4.01规范包含额外的语法约束,不能在DTD中表示。在另一个注释中,您建议通过将块包装在锚中来使块处于活动状态。我不认为HTML禁止这样做,CSS显然允许这样做。因此,为了回答标题中关于它是否正确的问题,我说是的。按照标准,有时是正确的。

慕莱坞森

有HTML 5规范.。现在可以在内联元素中放置块级元素。所以现在把‘div’或‘h1’放在‘a’元素中是非常合适的。
打开App,查看更多内容
随时随地看视频慕课网APP