HTML标签语义化

什么叫HTML语义化?

用合理的HTML标签以及其特有的属性去格式化文档内容.

HTML语义化的好处

  • 优化SEO

更好地支持搜索引擎的爬虫, 使搜索引擎抓取到页面上更多的有效信息

  • 对盲人阅读器和其它阅读器友好
  • HTML代码的可读性, 可维护性, 开发效率更高(减少规范不一致带来的沟通成本)
  • 浏览器们都在推动语义化, 遵循HTML语义化可能会得到更好的展示效果

怎么做语义化?

核心是减少无意义的<div>, 使用有表达意义的标签. 那么<div>用在哪? 用在做容器的时候, 仅仅用来构建外观和结构.

结构(节元素)标签的语义化

遵循HTML的结构标签用法和作用范围

图

  • <header> 内容区域的头部内容
  • <section> 区别于<article>定义一个完整的内容, <section>定义一个独立的小节, 内容相对比较短, 可能会有标题. <section> 经常嵌套在<article>
  • <nav> 定义文档的导航链接, 指向当前页面的关键部分, 或者其它页面. 但是不要用于页脚和其它区域转向链接(应该用<address>).
  • <article> 包裹一个独立内容区域, 一般包含标题和正文. 允许嵌套. 其实是一个特殊的section.
  • <aside> 常用于定义侧边栏, 或者广告. 当被用在<article>中时, 又表示一个特殊的<section>, 包裹一些与当前文章有关的附属信息. 比如名词解释.
  • <footer> 常用于定义页脚或某个区域的底部

文本标签的语义化

不同的文本标签, 本质并不是要定义样式, 而是要区分内容.

  • <span> 无语义
  • <a> anchor, 超链接
  • <b> bold, 纯粹吸引注意力, 但不传达重要性, 不加强语气
  • <em> emphases, 起局部强调作用, 声明重点内容, 常用于句子内
  • <strong> 全文强调, 程度更高
  • <i> 意大利手写体, 在英文文本中, 声明内容的特殊性(不同一般, 奇怪), 但在中文中斜体很少用, 一般用作引用字体图标
  • <q> 较短的引文
  • <blockquote> 较长的引文
  • <cite> 引文的出处
  • <time> 定义日期, 加上pubdate属性常表示发布日期
  • <code> 代码块
  • <pre> 预格式文本, 保留空格和换行符, 等宽字体, 常用于 长 代码块
  • <abbr> 缩写名词, 可以在它的title属性中写出全称
  • <dnf> 定义一个术语
  • <br> 文本内的换行符, 如果是想在页面上实现换行效果, 应该用display属性将其块级化
  • <figure> 定义一块独立内容, 该内容被删除不影响周围内容, 一般用于包裹图片, 图表, 音频, 代码等. <figcaption>是它专用嵌套属性, 声明标题.

References