HTML

对HTML语义化的理解与应用

HTML语义化

Yixuan Lang
2021-05-17
3 min

# 对HTML语义化的理解与应用

# 什么是语义化


以前的HTML结构,都是一堆没有语义的冰冷冷的标签,最常使用的就是div+css,使得整个页面的结构不易区分。为了改变这种状况,开发者和官方提出了让HTML结构语义化的概念,同时在新出的HTML中给出了几个新的语义化标签。语义化的含义就是用正确的标签做正确的事情,使得整个网页的结构更加的清晰。

semantic-fb

# 为什么要语义化


  • 页面结构: 为了在没有CSS的情况下,页面也能呈现更好的内容结构、代码结构
  • 用户体验: 例如title、alt用于解析名词或者解析图片信息、label标签的活用
  • 有利于SEO: 有助于爬虫抓取更多的有效信息(爬虫依赖于标签来确定上下文和各个关键字的权重)
  • 方便其他设备解析:如屏幕阅读器、盲人阅读器、移动设备以意义的方式来渲染网页
  • 便于团队开发和维护:语义化使得网页的结构==可读性更加强==,这样更加方便后期对网页的维护

# 使用语义化的方式写HTML时需注意什么


  • 尽可能少的使用无语义的标签div和span

  • 在语义不明显时,既可以使用div也可以使用p标签,但是==尽量使用p标签==。因为p标签在默认情况下有上下间距,对兼容特殊终端有利

  • 不要使用纯样式标签,如b、font、u等,尽量改用css对其进行设置

  • 需要强调的文本,可以包含在strong或者em标签中,strong默认样式是加粗(不要用b), em是粗体(不用i)

  • 使用表格时,标题用caption,表头用thead,主题部分用tbody包围,尾部用tfoot包围。表头和一般单元格要区分开,表头用th,单元格用td

  • 表单域要用fieldest标签包起来,并用legend标签说明表单的用途

# HTML5新增语义化标签


W3C 关于 HTML5 语义化的标准定义文档

html5-semantic

# 1. header元素

通常包含==h1-h6==元素,做为整个页面或者一个内容块的标题,整个页面没有限制header元素使用的个数,可以为每个内瓤块增加一个header元素

<header>
    <hgroup>
        <h1>网站标题</h1>
        <h1>网站标题</h1>
    </hgroup>
</header>

注意:如果h1-h6或者hgroup自己就能工作的很好,就不需要使用header

# 2. footer元素

footer元素通常做为==网页的页脚==,通常含有网页的一些基本信息。比如:作者、相关文档链接、版权信息等等

<footer>
    COPYRIGHT@Yixuan Lang
</footer>

# 3. nav元素

主要用于制作网页的导航,也可以用作底部导航

<nav>
    <ul>
        <li>CSS3</li>
        <li>HTML5</li>
        <li>Javascript</li>
    </ul>
</nav>

# 4. aside元素

  • 被包含在article元素中作为主要==内容的附属信息部分==,其中的内容可以是与当前文章有关的相关资料、名次解释,等等。
<article>
    <h1>Welcome to my blog</h1>
    <p>......</p>
    <aside>Yixuan Lang</aside>
</article>
  • 在article元素之外使用作为页面或站点全局的附属信息部分。最典型的是==侧边栏==,其中的内容可以使友情链接,博客中的其它文章列表、广告单元等

# 5. section元素

主要用于划分页面的==不同区域==,或者划分文章的==不同节==,一个section通常包含标题和内容两个部分

<section> 
   <h1>标题部分</h1> 
   <p>内容部分</p> 
</section>

也可以嵌套在article中使用

<article>    
   <header>文章article头部区域
   </header>    
   <section>        
      <h1>第一个区段</h2>       
      <p>第一个区段内容</p>    
   </section>    
   <section>       
      <h2>第二个区段</h2>       
      <p>第二个区段内容</p>     
   </section>
   <section>       
     <h3>第三个区段</h4>       
     <p>第三个区段内容</p>     
   </section>
</article>

# 6. article元素

用于在页面中表示一套==结构完整且独立的内容部分==,通常由标题、正文内容、页脚三部分组成,所以,article标签里面可包含独立的 header、footer 等结构化的标签

<article>
	<header>
		<h1>头部</h1>
		<p><time datetime="2021-5-17">1 hours ago</time></p>
	</header>
	<p>主体内容</p>
	<footer>
		<p>尾部</p>
	</footer>
</article>