HTML 提供了两种通用元素,其中div
是自然块元素,span
是自然行内元素。所有其他元素类似地分配为自然块或内联。
现在,虽然两者都可以通过 cssdisplay
成为inline
, inline-block
or 中的任何一个,block
但出于封闭目的,它们仍然被视为它们的自然本身,因此出现警告消息。豹子和斑点之类的东西。
然而,CSS是只意味着是什么使一个元素看起来像(演示),但实际上没有成为像(功能),所以它不会改变元素的基本性质,但在实践中变得非常模糊。一个span
做block
成为一个恶霸是踢一切断了线,这是非常非inline
类行为。
因此,为了减轻其自然行为和 css 引起的行为之间可能存在的冲突,最好允许:
div
或任何自然块标记只能是block
或inline-block
。
span
或任何自然的内联标签只能是inline
或inline-block
。
这也将减少倾向于构建可能最终产生错误和警告消息的页面结构。
基本上,永远不要在任何深度的自然内联标签中嵌入自然块标签。
之所以会有真正的区别,可能是因为在最初构想 HTML 时,它对 HTML 的用途有一个简单的想法。
当然,框架制造商通过在任何地方使用无数的div
s解决了很多这些嵌入到什么地方的问题,“divitis”诞生了,并且在每个框架中仍然存在并且很好地存在。只需F12
在几乎任何商业网页上按下浏览器并深入查看十几个div
。这个页面有 15 个不间断的div
s级别。
不难看出为什么只选择div
s 是有道理的。例如,一个p
标签可能有一堆指向不同站点的链接,这是可以的,因为块中允许内联链接p
。但是,如果不想在这些 url 中看到查询变量,那么button
s 是必需的。如果只有一个,那么 thep
可以放在 a 中form
,因为 ap
不能包含 a form
。
formaction
按钮上的属性可用于定位表单默认值以外的 url,但它仍然不允许独立表单,每个表单都有自己的一组隐藏输入。按钮可以使用该form
属性将其与不是祖先的表单一起使用,但跟踪起来可能会很麻烦。
但是,要使指向不同站点的多个链接显示为一个段落的一部分,唯一的方法是使用 adiv
而不是 the p
,然后将每个链接包装button
在自己的form
集合中inline
。大多数框架必须应对如此复杂的场景,以至于嵌套div
s 是唯一的出路。
这意味着他们实际上只需要为每个目的管理一个标签,并将其作为一个孤立的环境进行管理。所以原本偶尔使用的功能分组标签变成了网络的乐高积木。他们都不会因为匆忙转换为 HTML5 语义标签而冒险破坏他们的框架。最后,语义标签只真正适用于相当静态的内容,而不是丰富的交互式网站。