一些HTML元素(<div>
,<span>
,<p>
,<h1>
,<h2>
,...,<h6>
{{1} },<b>
等似乎除了默认样式之外的行为方式相同。例如,<i>
似乎等同于<span style="font-weight: bold;"> x </span>
。某些元素(如<b> x </b>
)具有特殊属性,但行为大致相同。
有人可以做到这一点吗?
特别是,是否存在“覆盖”所有HTML的元素子集?
编辑:我知道元素是为了携带语义。但是假设我不关心语义,我只想处理HTML的最小子集,这将使我能够访问某些给定的浏览器行为。我想知道如何找到那个子集。
答案 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消费者行为的一些原因:
span
元素本身。根据我的估算,abbr
,address
,b
,bdi
,bdo
,br
,cite
, code
,dd
,dfn
,div
,dl
,dt
,em
,footer
,{{ 1}},header
,kbd
,mark
,p
,pre
,rp
,rt
,{{1} },ruby
,s
,samp
,strong
,sub
,sup
和u
为最大< / strong>如果忽略语义,则可以使用span替换的元素列表。这是HTML5中107个不同元素中的31个。在其他76个中,每个都在浏览器中有特定的工作。
我注意到上面的列表中有一些我不知道等效样式的数字,并且在所有情况下使用正确的语义元素而不是用span +替换它的类型更少类。
答案 3 :(得分:1)
某些元素具有非常特定的用途,例如html
,head
,body
,script
,meta
,embed
,{ {1}},object
,hr
,table
,tr
,td
,form
。他们通过仅指定样式来做一些不可能做的事情。
其他元素,例如input
,span
,div
,b
,i
,u
,{{1只有它们的默认样式不同。您可以使用h1
代码并对其应用p
,并将其用作span
代码。
请注意,虽然有display:block
等块元素,但还有像div
这样的内联元素。您不能将块元素放在内联元素中(直到所有浏览器都支持HTML 5)。
因此,您严格不需要所有不同的元素。某些元素甚至已在HTML 4中弃用,例如div
和span
,因为它们不是必需的,并且不遵循现代标记用法,因此它们应该由样式替换。
但是,您应该考虑不同元素添加的语义。例如,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/