runfastlynda

我理解的html语义化

September 16, 2015

前端面试题中,关于html语义化常常会被提出,不同人有不同的理解,但简单来讲便是用正确的标签做正确的事情。语义化更具体的描述了作者对被显示数据的理解。这样看不管是人和机器都可以在既定的规范中理解作者的意图。

为什么要用语义

遵循语义化的好处不仅仅在你搜索到的好处之内,语义化的代码具有更好的亲和力,更主要的是逐渐使网页标准化。

具体来讲讲用正确的标签做正确的事情的意义!

  • html语义化就是让页面的内容结构化,便于对浏览器、搜索引擎解析。
  • 在没有样式CCS情况下也以一种文档格式显示,并且是容易阅读的。
  • 搜索引擎的爬虫依赖于标记来确定上下文和各个关键字的权重,利于 SEO。
  • 使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。

如何编写html使其语义化

在编写 HTML 的时候我们需要先了解模块在页面中的职能(即语义),然后依据各个模块的职能来选择合适的元素,例如:

  • 导航模块应该使用 nav
  • 文章模块就应该使用 article
  • 头部模块应该使用 header
  • 无编号列表模块应该使用 ul

HTML5 引入了一系列的语义标签,如 header, footer, article, section, nav, 等等。

简单来讲就是先了解模块在页面中的职能(语义),后编写 HTML 代码。

例如:在编写主导航的时候我们应该这么分析:

  • 主导航这个容器应该用 nav
  • 容器里面有个列表,用 ul
  • 每个链接放在个别的条目 li 里面

那么对应的html应该是这样的:

<nav class="main-nav">
  <ul>
    <li><a href="#">archive</a></li>
    <li><a href="#">projects</a></li>
    <li><a href="#">about</a></li>
  </ul>
</nav>

很明显,当我们看到一个 nav 就知道是导航,不需要去看它的风格。这也是分离内容和页面的表现方法。

对于模块语义的理解不同人会不一样,比如导航内的 4 个链接并不一定非要认为是一个无编号列表,也可以简单地将他们看做 4 个 a 标签的堆叠,从而对应的代码为:

<nav class="main-nav">
    <a href="#">archive</a>
    <a href="#">projects</a>
    <a href="#">about</a>    
</nav>

但总体上使用的标签不能和语义本身偏离太多。


评论没有加载,检查你的局域网

Cannot load comments. Check you network.