在语义 HTML 中,class 属性在没有 CSS 或 Javascript 的情况下是否有任何意义?

In semantic HTML does the class attribute mean anything in the absence of CSS or Javascript?

例如,如果没有 CSS 或 Javascript,class film_review 是否表示 <article class="film_review"> 中的任何内容(来自 MDN 的示例) ] 与页面交互,还是提供语义信息?

它提供语义纯粹是因为它在语义上将该元素与同一元素的其他元素联系起来 class。

没有规则规定任何东西(特别是 CSS and/or JavaScript 在这种情况下)必须 使用 class. class 本身只是标记的一部分,恰巧被当前的样式规则忽略了。

您可能还有其他带有 film_review class 的元素,它们在标记中表示 "film reviews" 的意义上是 "semantically" 连接的。这实际上是所有语义信息......关于代码中表示的事物的上下文。名副其实的 classes 可以提供这样的额外上下文。

但是浏览器不会对这些信息进行任何特殊处理。它只是为了防止任何人(样式、代码,甚至只是查看标记的人)想知道这个 article 属于一个命名的 class 元素。

这取决于。谁和其他什么正在处理您的 HTML?

例如,微格式有时会使用 类 向自然不具备丰富语义的元素添加语义信息。在这种情况下,ECMAScript 和 CSS 都不会处理该信息,但微格式解析器可能会处理。但是,film_review 不属于任何知名的微格式。

它不提供当代浏览器在没有 CSS 或 Javascript 的情况下会解释或使用的信息。

但是它可以携带语义信息——参见例如microformats。例如,您可以将 hcard

<div id="hcard-John-Doe" class="vcard">
  <span class="fn">John Doe</span>
  <div class="org">Cool Institute, Inc.</div>
  <div class="adr"><span class="locality">Prague</span></div>
</div>

在您的页面上,它带有语义信息。像 Google 这样的搜索引擎可以推断出 "John Doe" 是位于 "Prague" 的人的名字。还有其他微格式可以表示地理信息、日历事件等。

任何人都可以编写自己的 HTML 文档处理器来解释 class 属性值,所以答案是 是的,它提供语义信息

引用自hcard microformat example

Per the HTML4.01 specification, authors should be using the element to indicate the "contact information for a document or a major part of a document." E.g.

<address>
<a href="http://tantek.com/">Tantek Çelik</a></address>

By adding hCard to such existing semantic XHTML, you can explicitly indicate the name of the person, their URL, etc.:

<address class="vcard">
<a class="fn url" href="http://tantek.com/">Tantek Çelik</a>
</address>

页面上的所有内容都会被搜索引擎解析(读取),所以您的回答是,是的,它确实提供了语义信息,但是不同的 HTML 标记(元素)关联了不同的权重值、属性名称、属性值)。

然而,真正定义 HTML 令牌获得多少权重的真正取决于您声明它的文档类型 (HTML4/HTML5),<!DOCTYPE> 标记位于您页面的顶部向搜索引擎声明它是什么类型的文档bot/parser,这反过来控制搜索引擎机器人的解析模式(行为)如何阅读您的文档。

HTML5 的全部目的是提供 "semantics",允许您使用不同的标签,这样您就可以 markup/define 您的文档赋予内容更多的重要性,让搜索引擎能够理解它更好。这使搜索引擎可以更好地为最终用户提供服务,最终用户正在搜索与他们的搜索词相关的内容更相关的东西......如果你不使用 HTML5 而使用 HTML4 然后机器人主要依靠 HTML 属性来定义标签内的内容,例如 <div>,它不为其中的内容提供任何语义。

HTML5 上的语义更倾向于标准化 Web 上最常用的元素。如 HTML Semantic Elements 所述:

With HTML4, developers used their own favorite attribute names to style page elements: header, top, bottom, footer, menu, navigation, main, container, content, article, sidebar, topnav, ... This made it impossible for search engines to identify the correct web page content. With HTML5 elements like: <header> <footer> <nav> <section> <article>, this will become easier.

因此,像 "Film Review" 这样具体的元素不会在 HTML5 级别提供那么多的语义信息。