语义

在编程中,语义指的是一段代码的含义——例如“运行那行 JavaScript 会有什么效果?”或者“那个 HTML 元素有什么目的或作用?”(而不是“它看起来像什么?”)

JavaScript 中的语义

在 JavaScript 中,考虑一个函数,它接受一个字符串参数,并返回一个以该字符串作为 textContent<li> 元素。如果它被调用为 build('Peach')createLiWithContent('Peach'),你需要查看代码才能理解该函数做了什么吗?

CSS 中的语义

在 CSS 中,考虑使用 li 元素(代表不同类型的水果)来样式化列表。你会知道 div > ul > li.fruits__item 选择了 DOM 的哪一部分吗?

HTML 中的语义

在 HTML 中,例如,h1 元素是一个语义元素,它赋予其所包裹文本“页面上的顶级标题”的作用(或含义)。

html
<h1>This is a top level heading</h1>

默认情况下,大多数浏览器的用户代理样式表会以较大的字体大小样式化 h1,使其看起来像一个标题(尽管你可以将其样式化为任何你想要的样子)。

另一方面,你可以让任何元素看起来像一个顶级标题。考虑以下内容

html
<span style="font-size: 32px; margin: 21px 0;">Not a top-level heading!</span>

这会使其看起来像一个顶级标题,但它没有语义价值,因此不会获得上述任何额外的好处。因此,为正确的工作使用正确的 HTML 元素是一个好主意。

HTML 应该被编码以表示将要填充的数据,而不是基于其默认的呈现样式。呈现(它应该看起来如何)是 CSS 的唯一职责。

编写语义化标记的一些好处如下

  • 搜索引擎会将其内容视为影响页面搜索排名的重要关键词(参见 SEO
  • 屏幕阅读器可以将其用作路标,帮助视障用户导航页面
  • 查找有意义的代码块比在无数带有或不带语义或命名空间类的 div 中搜索要容易得多
  • 向开发人员提示将要填充的数据类型
  • 语义命名与正确的自定义元素/组件命名相呼应

在选择使用哪种标记时,问自己:“什么元素最能描述/代表我将要填充的数据?”例如,它是一个数据列表吗?有序的还是无序的?它是一篇文章,包含章节和相关信息的侧边栏吗?它列出了定义吗?它是一个需要标题的图或图像吗?除了全局网站范围的页眉和页脚之外,它还应该有自己的页眉和页脚吗?等等。

语义元素

这些是大约 100 个可用的语义元素中的一些

另见