为什么 <ol> 和 <dl> 没有被弃用?

问题描述 投票:0回答:3

最近我遇到了一种情况,我被困在 HTML 列表中使用

<ul>
,但我真正想要的是
<ol>
。我绞尽脑汁试图设置一个变量,以便我可以根据需要随时更改它。然后我突然意识到,我可以只使用 CSS
ul.class {list-style-type: decimal;}
。这会让我得到我正在寻找的东西。

但后来我想,为什么我们还会有

<ol>
?难道不应该被废弃吗?列表类型不是一个独特的样式选择,因此属于样式表吗?至少,这始终是您无法从 HTML 页面复制和粘贴列表项目符号的原因。然后我进一步想知道
<dl>
。是的,它稍微方便一些,但是您可以使用嵌套的
<div>
<p>
<ul>
<span>
轻松制作相同的效果。

在另一个问题中,似乎有人可以认为

<ol>
<dl>
具有语义质量。我可以购买它,尤其是对于
<dl>
,但它与不断被告知列表类型是风格而不是内容的情况背道而驰。还有更多我没有看到的原因吗?为什么它们还没有被弃用?

html css list deprecated semantic-markup
3个回答
10
投票

ul、ol 和 dl 之间的区别不仅仅在于这些元素渲染时的外观。语义上存在巨大差异。这就是为什么它们不能被弃用而代之以 ul。

我可以只使用CSS ul.class {list-style-type:decimal;}。这会 让我得到我正在寻找的东西。

看,这就是你的错误所在。你不会得到完全相同的结果。如果您仅因为它们的外观而使用 ol 或 dl,那么您就错了。

列表类型不是一种独特的风格选择吗

绝对不是。当你使用 html 标签时,你应该知道为什么要这样做。所有 3 种类型的列表都有其自己的含义和用途。

ul = 无序列表。 元素的顺序根本不重要
一个基本的例子是购物清单。你不在乎先买什么,你只想买清单上的所有物品。

ol = 有序列表。 顺序非常具体,先到先得确实很重要。一个很好的例子是蛋糕的食谱。不能先烤了再添加配料。

dl = 描述列表。您通常使用它来包含键值对,因为它包含术语对及其定义的列表。

当然,当谈到这些列表的外观时,您可以将一个列表替换为另一个列表,然后只应用 CSS 规则。或者甚至使用几个 div/span 标签并从头开始创建它。
然而,当涉及到语义标记时,正如我所解释的那样,差异是巨大的。

HTML 中的标签不仅用于包装内容,而且还具有一定的含义。它们描述了我们正在处理的内容类型。例如,当您关心 SEO 时,这一点很重要。

样式表仅用于更改元素在浏览器中的外观,但在解释内容时它们毫无用处。例如,网络爬虫根本不关心 css。


4
投票

它与不断被告知列表类型是样式而不是内容的说法背道而驰

谁说的? HTML 标记是语义,它传达含义。始终想象您在没有样式表上下文的情况下解析 HTML;比如说因为你是一个搜索引擎或者因为你正在挖掘数据。那么

ol
ul
dl
之间的语义差异非常清晰且显着。


1
投票

列表标记的类型不一定只是样式选择。作者可能希望使用“参见步骤 F.”来引用有序列表中的列表项。如果此列表标记样式 (

upper-alpha
) 仅在样式表中定义,则对于没有 CSS 支持的用户代理或使用自己的样式表的用户来说,它将失败。这就是为什么
ol
具有
type
属性
¹。

但忽略这一点,ol

ul
之间存在
语义
差异,而不仅仅是表象差异。如果您想传达列表是(未)排序的,您必须在 HTML 级别上执行此操作²。列表标记样式与此无关;您可以有一个带有要点的有序列表。

对于

dl
:您无法使用
dt
/
dd
/
div
/
p
元素或任何其他 HTML 元素(
ul
除外)来传达
span
/
table
组的语义,在某种程度上)。名称-值组可以有一个或多个名称 (
dt
) 和一个或多个值 (
dd
),它们代表替代项 (!)


1 注意:正在讨论

type
在 HTML 5.1/5.2 中会发生什么。

² 它也可以是(虚构的)

list
元素(
<list ordered>
<list unordered>
)或其他任何元素的属性,只要它是 HTML 的一部分。因此,您只需将 (
ul
)/
ol
替换为其他一些 HTML 元素/属性即可。

³ 当然,可以重新定义其他现有的 HTML 元素来传达这个含义。但是,这又必须发生在 HTML 级别。因此,您只需将

dl
替换为其他一些 HTML 元素/属性即可。

© www.soinside.com 2019 - 2024. All rights reserved.