不同的HTML元素如何等效?

时间:2012-01-05 00:05:53

标签: html

一些HTML元素(<div><span><p><h1><h2>,...,<h6> {{1} },<b>等似乎除了默认样式之外的行为方式相同。例如,<i>似乎等同于<span style="font-weight: bold;"> x </span>。某些元素(如<b> x </b>)具有特殊属性,但行为大致相同。

有人可以做到这一点吗?

特别是,是否存在“覆盖”所有HTML的元素子集?


编辑:我知道元素是为了携带语义。但是假设我不关心语义,我只想处理HTML的最小子集,这将使我能够访问某些给定的浏览器行为。我想知道如何找到那个子集。

5 个答案:

答案 0 :(得分:6)

HTML旨在标记文本 语义 。这意味着将含义赋予一段文字,例如这是一个标题这是一个段落这是一个引用< / em>,这应该强调。默认情况下,其中一些/大多数显示非常相似,但这不是重点。关键是能够以编程方式提取含义并根据其含义处理元素,例如通过样式化它们。不要将语义 style 混淆。

如果你想把它放在一边,你几乎只需要像div这样的块级元素和像span那样的内联元素,以及任何具有链接,对象等特定功能的元素。 / p>

答案 1 :(得分:4)

这取决于浏览器行为的含义。所有浏览器都会对具有a属性的href元素以特殊方式作为链接,并且这不能在CSS中表达。类似地,表单输入字段是特殊的,img也是如此,即使您可以通过在CSS中使用背景图像来模拟其大部分行为。但是例如abbr呢?虽然大多数浏览器只是对它应用了一些默认样式,但是一些特殊的浏览器或辅助工具使用户可以选择访问title属性的值。类似地,虽然大多数浏览器只是通过对它们应用一些默认样式来处理h1和其他标题元素,但是一些浏览器具有例如浏览器仅向用户读取标题的模式。

同样,您可以使用CSS(display: table等)创建表格,而无需在HTML中使用任何表格标记 - 尽管较旧的浏览器无法正确使用 - 但是您的“表格”将不具有可访问性功能HTML表可以有。

搜索引擎不是浏览器,但它们可能非常重要,并且已知它们会关注HTML标记,但细节尚未公开。但是,如果你开始,例如使用标题元素的样式div元素,你可能会失去搜索引擎友好性。

答案 2 :(得分:4)

<span class="...">无法完全复制元素而忽略单纯语义并仅考虑浏览器或其他HTML消费者行为的一些原因:

根据我的估算,abbraddressbbdibdobrcitecodedddfndivdldtemfooter,{{ 1}},headerkbdmarkpprerprt,{{1} },rubyssampstrongsubsupu最大< / strong>如果忽略语义,则可以使用span替换的元素列表。这是HTML5中107个不同元素中的31个。在其他76个中,每个都在浏览器中有特定的工作。

我注意到上面的列表中有一些我不知道等效样式的数字,并且在所有情况下使用正确的语义元素而不是用span +替换它的类型更少类。

答案 3 :(得分:1)

某些元素具有非常特定的用途,例如htmlheadbodyscriptmetaembed,{ {1}},objecthrtabletrtdform。他们通过仅指定样式来做一些不可能做的事情。

其他元素,例如inputspandivbiu,{{1只有它们的默认样式不同。您可以使用h1代码并对其应用p,并将其用作span代码。

请注意,虽然有display:block等块元素,但还有像div这样的内联元素。您不能将块元素放在内联元素中(直到所有浏览器都支持HTML 5)。

因此,您严格不需要所有不同的元素。某些元素甚至已在HTML 4中弃用,例如divspan,因为它们不是必需的,并且不遵循现代标记用法,因此它们应该由样式替换。

但是,您应该考虑不同元素添加的语义。例如,b元素在搜索引擎试图找出页面内容时非常重要。如果您的标题没有使用i元素,搜索引擎会将您的网页评分降低。

答案 4 :(得分:1)

它们之间的主要区别在于语义。为了说明,例如,在HTML5中,您有div,section,header,footer等,它们都是块元素。在HTML4中,您需要为所有这些使用div。哪个更容易阅读,查看,样式 - 一个充满div的页面或分为标题,部分和页脚的内容?

正如您所述,某些元素具有特定于该元素类型/或某些类型(例如,a)的属性。所以还有另外一个区别。

最后,在列表中,您还有一些块级别(例如div,p)和一些内联级别(例如span,b)元素 - 那些具有非常不同的默认行为。请参阅:http://www.webdesignfromscratch.com/html-css/css-block-and-inline/