1、什么是HTML语义化?

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

2、为什么要语义化?

• 为了在没有CSS的情况下,页面也能呈现出很好地内容结构、代码结构:为了裸奔时好看;
• 用户体验:例如title、alt用于解释名词或解释图片信息、label标签的活用;
• 有利于SEO :和搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息: 爬虫依赖于标签来确定上下文和各个关键字的权重;
• 方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页;
• 便于团队开发和维护,语义化更具可读性,是下一步吧网页的重要动向,遵循W3C标准的团队都遵循这个标准,可以减少差异化。

3、写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关联起来
  8. 有序列表内容

4、创建 块格式化上下文 BFC 的方式:

  1. 有序列表内容
  2. 根元素()
  3. 浮动元素(元素的 float 不是 none)
  4. 绝对定位元素(元素的 position 为 absolute 或 fixed)
  5. 行内块元素(元素的 display 为 inline-block)
  6. 表格单元格(元素的 display为 table-cell,HTML表格单元格默认为该值)
  7. 表格标题(元素的 display 为 table-caption,HTML表格标题默认为该值)
  8. 匿名表格单元格元素(元素的 display为 table、table-row、 table-row-group、table-header-group、table-footer-group(分别是HTML table、row、tbody、thead、tfoot的默认属性)或 inline-table)
  9. overflow 值不为 visible 的块元素
  10. display 值为 flow-root 的元素
  11. contain 值为 layout、content或 paint 的元素
  12. 弹性元素(display为 flex 或 inline-flex元素的直接子元素)
  13. 网格元素(display为 grid 或 inline-grid 元素的直接子元素)
  14. 多列容器(元素的 column-count 或 column-width 不为 auto,包括 column-count 为 1)
  15. column-span 为 all 的元素始终会创建一个新的BFC,即使该元素没有包裹在一个多列容器中(标准变更,Chrome bug)。