HTML语义化的案例分析 | 青训营

52 阅读5分钟

HTML语义化的案例分析

“语义化”:指的是机器在需要更少的人类干预的情况下, 能够研究和收集信息; 让网页能够被机器理解, 最终让我们受益 。

HTML 标签语义化: 直观的认识标签(markup)和 属性(attribute)的用途和作用 。

  1. h1~h5 系列是标题 。
  2. strong,em 用来加强语气 。
  3. 根据内容的结构化 (内容语义化), 选择合适的标签(代码语义化)便于开发者阅读, 和写出更优雅的代码的同时, 让爬虫和浏览器很好地解析 。

HTML 语义化网页的好处

  1. 最主要的就是对 '搜索引擎' 友好, 有了良好的 结构和语义 的网页内容, 自然容易被搜索引擎抓取 。

  2. 有利于 'SEO': 和搜索引擎建立良好沟通, 有助于爬虫抓取更多的有效信息 。

  3. 方便其他设备解析 (如屏幕阅读器, 盲人阅读器, 移动设备) 以语义化的方式来渲染网页 。

  4. 便于团队开发和维护, 语义化更具可读性, 遵循 W3C 标准的团队都遵循这个标准, 可以减少差异化 。

  5. 为了在没有 CSS 的情况下, 页面也能呈现出很好地内容结构; 代码结构:为了裸奔时好看 。

  6. 用户体验: 例如 title, alt 用于解释名词或解释图片信息的标签, 尽量填写有含义的词语, label 标签的活用 。

如何进行 HTML 语义化

  1. 尽可能少的使用无语义的标签 div / span 。

  2. 在语义不明显时, 既可以使用 div 或者 p 时, 尽量用 p, 因为 p 在默认情况下有上下间距, 对兼容特殊终端有利 。

  3. 不要使用纯样式标签, 如: b / font / u 等, 改用 css 设置 。

  4. 需要强调的文本, 可以包含在 strong 或者 em 标签中(浏览器预设样式, 能用 CSS 指定就不用他们), strong 默认样式是加粗 (不要用 b), em 是斜体(不用 i) 。

  5. 使用表格时, 标题 要用 caption, 表头用 thead, 主体部分用 tbody 包围, 尾部用 tfoot 包围 。 表头 和一般 单元格 要区分开, 表头用 th, 单元格用 td 。

  6. 表单域要用 fieldset 标签包起来, 并用 legend 标签说明表单的用途 。

  7. 每个 input 标签对应的说明文本都需要使用 label 标签, 并且通过为 input 设置 id 属性, 在 lable 标签中设置 for=someld 来让说明文本和相对应的 input 关联起来 。

语义化标签:

  1. header

    1. header 元素代表 "网页" 和 "section" 的页眉 。
    2. 如果 hgroup 或 h1-h6 自己就能工作的很好, 那就不要用 header。
  2. footer

    1. footer 元素代表 "网页" 或 "section" 的页脚 。
    2. 通常含有该页面的一些基本信息, 例如: 文档 '创作者的姓名' / '文档的版权信息'/ '使用条款的链接' / '联系信息' 等等 。
  3. hgroup

    1. hgroup 元素代表 "网页" 或 "section" 的标题 。
    2. 当元素有多个层级时, 该元素可以将 h1-h6 元素放在其内, 譬如文章的主标题和副标题的组合 。
    3. 如果只需要一个 h1-h6 标签就不用 hgroup 。
    4. 如果有连续多个 h1-h6 标签就用 hgroup 。
    5. 如果有连续多个标题和其他文章数据, h1-h6 标签就用 hgroup 包住, 和其他文章元数据一起放入 header 标签 。
  4. nav

    1. nav 元素代表页面的 "导航链接区域" 。
    2. 用于定义页面的主要导航部分 。
    3. 事实上规范上说 nav 只能用在页面主要导航部分上 。
    4. 用在整个页面主要导航部分上, 不合适就不要用 nav 元素 。
  5. aside

    1. aside 元素被包含在 article 元素中作为主要内容的 "附属信息" 部分 。
    2. 内容可以是与当前文章有关的 '相关资料' / '标签' / '名词解释等' 。
    3. aside 在 article 内表示主要内容的附属信息 。
    4. 在 article 之外则可做 '侧边栏', 没有 article 与之对应, 最好不用 。
    5. 如果是广告,其他日志链接或者其他分类导航也可以用 。
  6. article

    1. article 元素最容易跟 section 和 div 容易混淆, 其实 article 代表一个 '文档', 页面或者网站中自成一体的内容, 其目的是为了让开发者独立开发或重用 。
    2. 譬如论坛的帖子, 博客上的文章, 一篇用户的评论, 一个互动的 widget 小工具 。
    3. 自身独立的情况下: 用 article 。
    4. 是相关内容: 用 section 。
    5. 没有语义的: 用 div 。
  7. section

    1. 标签定义文档中的 '节' (section、区段)。比如 章节、页眉、页脚或文档中的其他部分 。
    2. section 不是一个专用来做容器的标签, 如果仅仅是用于设置样式或脚本处理, 专用的是 div 。
    3. section 里应该有 标题 (h1~6), 但文章中推荐用 article 来代替 。
    4. 一条简单的准则是, 只有元素内容会被列在文档大纲中时, 才适合用 section 元素 。
    5. section 的作用是对页面上的内容进行分块, 如各个有标题的版块, 功能区或对文章进行分段, 不要与有自己完整、独立内容的 article 混淆 。
  8. address

    1. 代表 '区块容器', 必须是作为 '联系信息' 出现, 邮编地址、邮件地址等等,一般出现在 footer 。

无语义化标签

  1. div: 分区 结合css页面布局 双标签、独占一行

  2. span: 文本标签 双标签、在一行展示

  3. a 标签 用于控制页面之间跳转 a标签并不算是语义标签:他没有意义,只是一个链接。

    使用淘宝页面为例子: 如果未使用语义化标签:

淘宝.png 则只是如下图显示,且较为繁琐

套保.png 使用后标题只需要一个header 具体如下图(图源网络)

33bbeae38231e4c7efc7dce6a42197cc.jpeg

我的分析就到这里,欢迎指正。