4 回答
<s>
并且<del>
两者仍然存在于 HTML 规范中。
也就是说,它们实际上在语义上代表了不同的事物。<del>
如果您有一个现有文档并且想要指示文档中的文本但已被删除,则将特别使用。这与不再准确但尚未删除的文档中的文本不同(您可以使用<s>
它)。
即使大多数浏览器默认设置了删除线,您也不应该使用或依赖其中任何一个进行样式设置。您应该只依赖 CSS 进行演示。
由于搜索引擎工作方式的反复无常,很难说一个标签或另一个标签是否会对关键字的创建方式和您的内容的索引方式产生影响。您应该专注于创建语义正确的优质内容,您的网站排名也会随之而来。
阅读现有答案后,我仍然对在我的应用程序中使用哪一个感到困惑。我们同意它们在外观上是相同的,并且差异主要归结为语义。Mozilla 的 MDN 文档帮助我阐明了语义。
我认为<s>
对于大多数用例来说都是正确的,这就是为什么以及四个相关选项:
<strike>
很明显,
<strike>
已弃用,因此不再正确使用。<s>
从
<s>
MDN:HTML 删除线元素 (
<s>
) 呈现带有删除线或穿过它的线的文本。使用<s>
元素来表示不再相关或不再准确的事物。但是,<s>
在指示文档编辑时不合适;为此,请酌情使用<del>
and<ins>
元素。**<del>
来自
<del> on MDN
:HTML 已删除文本元素 (
<del>
) 表示已从文档中删除的文本范围。此元素通常(但不必)使用删除线文本呈现。在这个页面上对我来说最大的关键是
<del>
,like<ins>
提供了两个额外的(可选)属性:cite
并且datetime
在引用文档上下文中的更改时有意义。作为一个反例,如果我正在更新餐厅菜单,那么引用已售罄菜单项的来源似乎并不相关。无标签/使用 CSS
如果上述方法对您的用例而言似乎都不正确,请记住您仍然可以定义自定义类。
.purchased { text-decoration: line-through; }
<p>Wish list</p> <ul> <li class="purchased">New MacBook</li> <li>Cookies</li> </ul>
del
和之间没有实际区别s
,只是标签名称不同。它们具有相同的默认呈现(过度渲染的文本),并且没有证据表明浏览器或搜索引擎在处理方面有任何差异,也没有理由期待这种差异,因为“语义”定义是模糊的,作者并不在意关于他们。没有证据表明搜索引擎对这些元素采取了任何行动——它们对文本进行操作,通常忽略文本级标记,除了可能被认为在页面中赋予其内容更大相对权重的某些元素。
默认或“预期”的默认渲染在 HTML5 CR 的渲染部分中明确指定:del, s, strike { text-decoration: line-through; }
理论上的区别在于 HTML 规范和草案对其“含义”的表述,从一个 HTML 版本到另一个 HTML 版本不同。
所以你可以使用任何一个元素,或者都不使用。过度强调文本不是一个好主意,因为它很容易使某些字母难以阅读。但是,如果您需要超标(例如,因为广告需要包含旧价格超标),使用 可能是最安全的strike
,这是一个诚实的表现元素。因此,您甚至可以避免某些软件可以解释s
或del
以某种特殊方式解释的理论可能性,基于某人对 HTML5 CR 的阅读,可能与您的意图不同,因此可能导致一些与您的原因不一致的渲染或处理过激。(从历史上看,s
一直strike
是同义词,但 HTML5 CR 对它们进行了任意区分,使s
“语义”和strike
表象。)
我会按照语义定义的方式使用它们:DEL 表示已删除的文本,S 表示现在不准确但尚未删除的文本。
这些可能大部分看起来相同,但屏幕阅读器和其他辅助工具可能会以不同方式处理 - DEL 可能会被完全忽略(例如:不读出),而 S 可能会被读出但与普通文本不同。