把一个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元素的传统解释。

有没有人有任何关于这个问题的进一步提示?


取决于您所服务的HTML版本:

  • HTML 5规定,只要没有交互式内容(例如按钮或其他链接), <a>元素“可能会围绕整个段落,列表,表格等等甚至整个部分。”

  • HTML 4.01指定<a>元素可能只包含内联元素。 一个<div>是一个块元素,所以它可能不会出现在<a>

    当然,你可以自由设计一个内联元素,使它看起来像是一个块,或者确实是一个块的样式,以便内联渲染。 在HTML中使用inlineblock是指元素与文档语义结构的关系,而CSS中的相同术语更多地与元素的视觉样式相关。 如果你让内联元素以块状显示,那很好。

    但是,当CSS不存在时,例如通过屏幕阅读器等辅助技术访问时,或者实际上由强大的Googlebot检查时,您应该确保文档的结构仍然有意义。


  • 不,它不会验证,但是它通常会在现代浏览器中运行。 也就是说,在你的锚点中使用一个span,并在其上设置display: block ,这将在任何地方都能正常工作,并且会验证!


    W3C文档不会使用像错误和罪恶这样的概念,但它确实使用了诸如提供手段之类的概念,可能是适当的,并且是令人沮丧的。

    实际上,在第4节的第二段中,4.01规范将其内容逐项列出如下

    本文件中的“必须”,“不得”,“需要”,“应”,“不应”,“应该”,“不应该”,“推荐”,“可能”和“可选”按照[RFC2119]中的描述进行解释。 但是,为了便于阅读,这些文字在本规范中并不全部以大写字母出现。

    考虑到这一点,我相信这个权威性声明在7.5.3块级和内联元素中 ,它说

    通常,内联元素可能只包含数据和其他内联元素。

    条件“通常”似乎引入了足够的含糊不清,以表明HTML 4.01确实允许内联元素包含块元素。

    当然,CSS2有一个显示属性值,inline-block,看起来适合你描述的目的。 我不确定它是否得到广泛支持,但似乎有人预计需要这种行为。

    DTD在这里显得不那么宽容,但DTD的文本遵循规范:

    HTML 4.01规范包含无法在DTD内表达的其他语法约束。

    在另一条评论中,你建议你想通过将它包装在一个锚点中来使一个块活跃起来。 我不相信HTML禁止,CSS明确允许它。 所以要回答标题问题是否永远是正确的,我说是的。 按照标准,有时候是正确的。

    链接地址: http://www.djcxy.com/p/6211.html

    上一篇: Is putting a div inside an anchor ever correct?

    下一篇: How to stream a PDF file as binary to the browser using .NET 2.0