Semantic Element

Semantic Element

1.什么是语义化

根据内容的结构,选择合适的标签(代码语义化)便于开发者阅读。写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析。

语义(semantic) 

语义化标记,是指每种标记表示一种特定的内容形态,例如标题、列表、表格等。与之对应的概念,是样式标记(presentational markup)。

Tim最初设想HTML应该是一种纯语义化的标记语言,然而在混沌无序的初始阶段,各家浏览器厂商多少受到另一种通行多年的标记语言SGML的影响,由于该语言同时存在语义化标记和样式标记,于是早期的HTML也被设计成了两类标记的杂合体。

不过随着90年代末CSS的逐步应用以及随之而起的“内容与表现分离”理念,样式标记在新的HTML版本中被逐渐废除,但出于向后兼容的考虑,仍然有部分样式标记被保留,例如:i(样式)/ em(语义);b(样式)/ strong(语义)。

2.为什么要语义化

  • 语言性质: HTML本身就是语义化标记语言,使用符合语义的标记,才谈得上正确使用HTML
  • 可访问性: 去掉或者丢失样式的时候能够让页面呈现出清晰的结构
  • 有利于SEO: 和搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息。爬虫依赖于标签来确定上下文和各个关键字的权重。
  • 增强扩展性: 方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页。
  • 便于开发和维护: 语义化更具可读性,是下一步吧网页的重要动向,遵循W3C标准的团队都遵循这个标准,可以减少差异化。

3.写HTML代码时应注意什么?

  • 尽可能少的使用无语义的标签如:div、span;
  • 在语义不明显时,既可以使用div或者p时,尽量用p, 因为p在默认情况下有上下间距,对兼容特殊终端有利;
  • 不要使用纯样式标签,如:b、font、u等,改用css设置。
  • 表单域要用fieldset标签包起来,并说明表单的用途;
  • 使用表格时,标题要用caption,表头用thead,主体部分用tbody包围,尾部用tfoot包围。表头和一般单元格要区分开,表头用th,单元格用td;

    TagsDescription
    <thead>Specifies a table header
    <tbody>Specifies a table body
    <td>Specifies a table cell
    <tr>Specifies a table row
    <th>Specifies a table header
    <tfoot>Specifies a table footer
  • 过分使用diV标签,html的语义化很不好,div 是一个没有语义的标签,但是没有语义不代表没有意义,建议div只用来构建布局,除此之外尽量少用。
  • Div与span在html中都是用在辅助布局的,都是没有语义的,不同点是,div是块元素,span是内联元素,从逻辑结构上讲,div 用来划分块元素,span用来划分内联元素。把<a>里边套一个<span>我们常用的技巧。检查Html页面是否语义化最好的方法, 便是去掉页面的Css链接, 看网页结构是否井然有序, 页面是否仍然有很好的可读性。