我听说在内联元素中放置块元素是一种HTML错误:
<a href="http://example.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规范似乎是这样认为的:
样式表提供了指定任意元素呈现的方法,包括元素呈现为块还是内联。在某些情况下,例如列表元素的内联样式,这可能是合适的,但一般来说,作者不希望以这种方式覆盖超文本标记语言元素的传统解释。
有没有人对这个问题有进一步的建议?
W3C文档没有使用错误和罪恶这样的概念,但它确实使用了提供手段、可能是适当的和不鼓励的概念。
实际上,在第4节的第二段中,4.01规范将其文字逐项列出如下
本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照[RFC2119]中所述进行解释。然而,为了可读性,这些单词在本规范中并非以所有大写字母出现。
考虑到这一点,我认为7.5中有明确的陈述。3个块级和内联元素,其中
通常,内联元素可能只包含数据和其他内联元素。
条件“一般”似乎引入了足够的歧义,可以说超文本标记语言4.01确实允许内联元素包含块元素。
当然,CSS2有一个显示属性值inline block,它似乎适合您描述的用途。我不确定它是否得到过广泛的支持,但似乎有人预见到了这种行为的必要性。
DTD在这里似乎不那么宽容,但DTD的文本符合规范:
在另一个注释中,您建议通过将块包装在锚点中使其处于活动状态。我不相信HTML禁止这样做,CSS显然也允许这样做。因此,为了回答标题问题,关于它是否永远正确,我说是的。按照标准,它有时是正确的。
根据您要迎合的超文本标记语言版本:
>
超文本标记语言4.01指定
当然,您可以自由设置内联元素的样式,使其看起来像块,或者确实可以设置块的样式,使其内联呈现。HTML中术语
inline
和block
的使用是指元素与文档语义结构的关系,而CSS中的相同术语更多地与元素的视觉样式相关。如果您使内联元素以块的方式显示,这很好。
但是,您应该确保当CSS不存在时,文档的结构仍然有意义,例如,当通过屏幕阅读器等辅助技术访问时,或者当强大的Google机器人检查时。
问题内容: 我听说将block元素放入内联元素是HTML的罪过: 但是,如果您像样式表那样设置外部锚点,该怎么办?还是错吗?关于块级和内联元素的HTML 4.01规范似乎是这样认为的: 样式表提供了一种方法来指定任意元素的呈现,包括将元素呈现为块还是内联。在某些情况下,例如列表元素的内联样式,这可能是适当的,但总的来说,不鼓励作者以这种方式覆盖HTML元素的常规解释。 有人对此问题有其他建议吗?
我想知道HTML代码是否有效: 如果它无效,还能做什么?
问题内容: 我想将居中。但是,事实并非如此。我只想找出原因以及如何使其居中。 问题答案: 您需要设置容器的宽度。(不起作用) MDN的CSS参考说明了这一切。
问题内容: 我想将添加到另一个div内的div居中。 这是我当前正在使用的CSS。 如您所见,我现在使用的方法取决于width和height的值。如果width / height发生变化,我将不得不修改and值。是否有任何通用解决方案可用于始终将居中对齐它的大小? 我发现使用可以将innerDiv水平分配到中间,但是垂直分配中间呢? 问题答案: tl; dr 垂直对齐中间作品,但是您将不得不在父元
问题内容: 我有一个元素,我想在上面加一个边框。我知道我可以写,但是这会在div的任何一侧增加2px,这不是我想要的。 我宁愿此边框距div的边缘为-1px。div本身是100px x 100px,如果我添加边框,则必须做一些数学运算才能使边框出现。 有什么方法可以使边框出现,并确保框仍为100px(包括边框)? 问题答案: 将属性设置为:
问题内容: 说,有一个网址 是否应该按照标准将内容发送到Web服务器? 现代浏览器如何运作? 更新: 请不要忽略第一个问题。 问题答案: 该问题的答案类似于/ questions / 774136的答案。基本上,根据标准@ faqs.org/rfcs/rfc1808.html(请参阅2.4.1节),它说:““请注意,片段标识符不视为URL的一部分。”正如“ stephbu”指出的那样,“ “锚标记