HTML语义化的案例分析
“语义化”:指的是机器在需要更少的人类干预的情况下, 能够研究和收集信息; 让网页能够被机器理解, 最终让我们受益 。
HTML 标签语义化: 直观的认识标签(markup)和 属性(attribute)的用途和作用 。
- h1~h5 系列是标题 。
- strong,em 用来加强语气 。
- 根据内容的结构化 (内容语义化), 选择合适的标签(代码语义化)便于开发者阅读, 和写出更优雅的代码的同时, 让爬虫和浏览器很好地解析 。
HTML 语义化网页的好处
-
最主要的就是对 '搜索引擎' 友好, 有了良好的 结构和语义 的网页内容, 自然容易被搜索引擎抓取 。
-
有利于 'SEO': 和搜索引擎建立良好沟通, 有助于爬虫抓取更多的有效信息 。
-
方便其他设备解析 (如屏幕阅读器, 盲人阅读器, 移动设备) 以语义化的方式来渲染网页 。
-
便于团队开发和维护, 语义化更具可读性, 遵循 W3C 标准的团队都遵循这个标准, 可以减少差异化 。
-
为了在没有 CSS 的情况下, 页面也能呈现出很好地内容结构; 代码结构:为了裸奔时好看 。
-
用户体验: 例如 title, alt 用于解释名词或解释图片信息的标签, 尽量填写有含义的词语, label 标签的活用 。
如何进行 HTML 语义化
-
尽可能少的使用无语义的标签 div / span 。
-
在语义不明显时, 既可以使用 div 或者 p 时, 尽量用 p, 因为 p 在默认情况下有上下间距, 对兼容特殊终端有利 。
-
不要使用纯样式标签, 如: b / font / u 等, 改用 css 设置 。
-
需要强调的文本, 可以包含在 strong 或者 em 标签中(浏览器预设样式, 能用 CSS 指定就不用他们), strong 默认样式是加粗 (不要用 b), em 是斜体(不用 i) 。
-
使用表格时, 标题 要用 caption, 表头用 thead, 主体部分用 tbody 包围, 尾部用 tfoot 包围 。 表头 和一般 单元格 要区分开, 表头用 th, 单元格用 td 。
-
表单域要用 fieldset 标签包起来, 并用 legend 标签说明表单的用途 。
-
每个 input 标签对应的说明文本都需要使用 label 标签, 并且通过为 input 设置 id 属性, 在 lable 标签中设置 for=someld 来让说明文本和相对应的 input 关联起来 。
语义化标签:
-
header
- header 元素代表 "网页" 和 "section" 的页眉 。
- 如果 hgroup 或 h1-h6 自己就能工作的很好, 那就不要用 header。
-
footer
- footer 元素代表 "网页" 或 "section" 的页脚 。
- 通常含有该页面的一些基本信息, 例如: 文档 '创作者的姓名' / '文档的版权信息'/ '使用条款的链接' / '联系信息' 等等 。
-
hgroup
- hgroup 元素代表 "网页" 或 "section" 的标题 。
- 当元素有多个层级时, 该元素可以将 h1-h6 元素放在其内, 譬如文章的主标题和副标题的组合 。
- 如果只需要一个 h1-h6 标签就不用 hgroup 。
- 如果有连续多个 h1-h6 标签就用 hgroup 。
- 如果有连续多个标题和其他文章数据, h1-h6 标签就用 hgroup 包住, 和其他文章元数据一起放入 header 标签 。
-
nav
- nav 元素代表页面的 "导航链接区域" 。
- 用于定义页面的主要导航部分 。
- 事实上规范上说 nav 只能用在页面主要导航部分上 。
- 用在整个页面主要导航部分上, 不合适就不要用 nav 元素 。
-
aside
- aside 元素被包含在 article 元素中作为主要内容的 "附属信息" 部分 。
- 内容可以是与当前文章有关的 '相关资料' / '标签' / '名词解释等' 。
- aside 在 article 内表示主要内容的附属信息 。
- 在 article 之外则可做 '侧边栏', 没有 article 与之对应, 最好不用 。
- 如果是广告,其他日志链接或者其他分类导航也可以用 。
-
article
- article 元素最容易跟 section 和 div 容易混淆, 其实 article 代表一个 '文档', 页面或者网站中自成一体的内容, 其目的是为了让开发者独立开发或重用 。
- 譬如论坛的帖子, 博客上的文章, 一篇用户的评论, 一个互动的 widget 小工具 。
- 自身独立的情况下: 用 article 。
- 是相关内容: 用 section 。
- 没有语义的: 用 div 。
-
section
- 标签定义文档中的 '节' (section、区段)。比如 章节、页眉、页脚或文档中的其他部分 。
- section 不是一个专用来做容器的标签, 如果仅仅是用于设置样式或脚本处理, 专用的是 div 。
- section 里应该有 标题 (h1~6), 但文章中推荐用 article 来代替 。
- 一条简单的准则是, 只有元素内容会被列在文档大纲中时, 才适合用 section 元素 。
- section 的作用是对页面上的内容进行分块, 如各个有标题的版块, 功能区或对文章进行分段, 不要与有自己完整、独立内容的 article 混淆 。
-
address
- 代表 '区块容器', 必须是作为 '联系信息' 出现, 邮编地址、邮件地址等等,一般出现在 footer 。
无语义化标签
-
div: 分区 结合css页面布局 双标签、独占一行
-
span: 文本标签 双标签、在一行展示
-
a 标签 用于控制页面之间跳转 a标签并不算是语义标签:他没有意义,只是一个链接。
使用淘宝页面为例子: 如果未使用语义化标签:
则只是如下图显示,且较为繁琐
使用后标题只需要一个header
具体如下图(图源网络)
我的分析就到这里,欢迎指正。