HTML中的<s>和<del>有什么区别?它们会影响网站排名吗?

38
什么是<s><del>之间的区别?我在这里读到(https://dev59.com/2XVC5IYBdhLWcg3whBWj#271776<b><strong>之间存在语义差异,那么<s><del>是否也适用?此外,搜索引擎如何解释这样的语义差异(如果有的话),并对排名产生什么影响?还有其他标签会影响搜索排名吗?

唯一能告诉你 HTML 如何影响 Google 排名的人是 Google 工程团队。 - David Thomas
这个问题似乎与编程无关,因为它涉及到SEO;建议您在Webmasters Stack Exchange上提问。 - Peter O.
4个回答

45

<s><del>在HTML规范中仍然存在。

  • <del>元素表示从文档中删除的内容。
  • <s>元素表示不再准确或不再相关的内容。

也就是说,它们在语义上实际上代表不同的内容。具体而言,如果您有一个现有文档并想指示已从文档中删除的文本,则应使用<del>,这与文档中不再准确但未被删除的文本不同(可以使用<s>)。

尽管大多数浏览器默认将它们划掉,但您不应依赖于它们进行样式设置。您应该只依靠CSS进行呈现。

由于搜索引擎工作方式的多变性,很难确定一个标签是否会影响关键字的创建以及内容的索引。因此,您应专注于创建符合语义的优质内容,您的网站排名将随之提高。


5
这个回答似乎排除了 W3 工作组关于 <s> 元素参考的一个重要部分,该参考指出:“s 元素表示不再准确或不再相关并已从文档中删除的内容。” 在这方面,<s><del> 当然是完全相同的吧? - Sprogz
1
我同意@Sprogz的观点,虽然我知道它们在语义上应该是不同的,但无论我怎么看,它们实际上都是相同的。而且使用<s>感觉太像简单的排版标记,比如<b>。因此,出于这个原因,我更倾向于使用<del> - gfullam
7
现在已经通过的HTML5推荐标准关于<s>所说的与这个回答引用的旧版草案中完全一样,没有提到任何东西被“删除”。唯一的例子是关于老零售价格被提及以及新价格。将旧价格称为“不再准确或不再相关”是荒谬的,因为它是专门为了比较而提到的——它是准确的(作为过去事实)并且相关。这表明这些“语义”定义和区分存在问题。 - Jukka K. Korpela
1
此外,增加了固有的混淆,当前“living standard”中DEL的示例(https://html.spec.whatwg.org/multipage/edits.html#the-del-element)甚至不是通常的差异样本,而是使用`S`直观地完成待办事项清单的“已完成”项目(这绝对不是通过任何方式“从文档中删除”,直到它被实际删除为止...)。 - Sz.

17
阅读现有答案后,我仍然不确定在我的应用程序中使用哪个。 我们都同意它们在表现上是相同的,而差异主要在于语义。 Mozilla的MDN文档帮助我澄清了语义。
我认为大多数情况下使用是正确的,这是为什么以及四个相关选项:
  1. <strike>

    It's clear that <strike> is deprecated, and therefore not correct to use anymore.

  2. <s>

    From <s> on MDN:

    The HTML Strikethrough Element (<s>) renders text with a strikethrough, or a line through it. Use the <s> element to represent things that are no longer relevant or no longer accurate. However, <s> is not appropriate when indicating document edits; for that, use the <del> and <ins> elements, as appropriate.**

  3. <del>

    From <del> on MDN:

    The HTML Deleted Text Element (<del>) represents a range of text that has been deleted from a document. This element is often (but need not be) rendered with strike-through text.

    The biggest key to me on this page is that <del>, like <ins>, offers two additional (optional) attributes: cite and datetime which make sense in referring to a change in the context of a document. As a counterexample, if I were updating a restaurant menu, citing a source for a menu item being sold out doesn't seem relevant.

  4. No tag / use CSS

    If none of the above seem correct for your use case, remember that you can still define a custom class.

    .purchased { text-decoration: line-through; }
    <p>Wish list</p>
    <ul>
      <li class="purchased">New MacBook</li>
      <li>Cookies</li>
    </ul>


5
除了标签名称不同之外,dels之间没有实际区别。它们具有相同的默认呈现效果(删除线文本),并且没有证据表明浏览器或搜索引擎在处理这些元素时有任何差异,也没有理由期望出现这样的差异,因为“语义”定义是模糊的,作者对此并不太关心。任何搜索引擎上这些元素都没有被处理——它们处理的是文本,并通常忽略文本级标记,除非一些元素可能被视为使其内容在页面中具有更大的相对权重。
在HTML5 CR的Rendering部分中明确指定了默认或“预期”默认呈现效果:del、s、strike { text-decoration:line-through; } 理论上的区别在于HTML规范和草案对它们的“含义”所说的话,在不同的HTML版本中有所不同。
因此,您可以使用任一元素或两个元素都不使用。删除线文本不是一个很好的主意,因为它很容易使一些字母难以阅读。但如果您需要打删除线(例如,因为广告需要包含旧价格的删除线),那么使用strike可能是最安全的选择,它是一个诚实的表现元素。这样您甚至避免了一些软件可能会基于某人对HTML5 CR的阅读而以某种特殊的方式解释sdel,从而可能导致一些呈现或处理与您打删除线的原因不一致。(历史上,sstrike是同义词,但HTML5 CR在它们之间划分出任意区别,将s称为“语义”元素,将strike称为表现元素。)

1
这不是一个好的实践方式。请参考已接受的答案以获得更好的解释。 - Bardi Harborow
也许更准确地说,“在表达上没有实际区别”。从语义上讲,这两者是非常不同的,而在实践中,语义比理论更重要。 - Taylor D. Edmiston
Taylor,“两者之间有很大的区别”这种说法有些牵强附会……即使是标准本身也无法明确说明。请查看下面被接受答案的评论,以获得更为微妙的图片。它们的语义“定义”最多是模棱两可的,而W3C在规范中使用的示例则是令人困惑的(例如,用S表示旧价格标签,但用'DEL'表示旧的(已完成)待办事项……)。 (注意:显然,有些情况下选择是明确的,例如用于呈现差异输出的DEL等)。 - Sz.

2
我会按照语义的定义来使用它们:DEL用于已删除的文本,S用于现在不准确但未被删除的文本。
这两者看起来可能大致相同,但屏幕阅读器和其他辅助工具可以以不同的方式处理它们 - DEL可能完全被忽略(例如:不朗读),而S可能会被朗读出来,但与普通文本有所区别。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接