HTML语义化的案例分析 | 青训营

69 阅读2分钟

HTML语义化

HTML语义化是指使用恰当语义的HTML标签,使页面具有良好的结构与含义,从而让人和机器都能快速理解网页内容。HTML5引入了许多新的语义化标签,如<header><nav><article><section><aside><footer>等,这些标签能够更清晰地表达文档结构。

HTML5新增的一些语义化标签列举如下:

  • <article>:定义独立的、自包含的内容,例如博客文章或新闻报道。
  • <aside>:定义与主要内容相关但可独立于主要内容的部分,例如侧边栏或拉出式广告。
  • <details>:定义用户可以查看或隐藏的额外细节。
  • <figcaption>:定义<figure>元素的标题。
  • <figure>:定义独立的流内容,例如图像、图表或代码片段。
  • <footer>:定义文档或节的页脚。
  • <header>:定义文档或节的页头。
  • <main>:定义文档的主要内容。
  • <mark>:定义需要突出显示的文本。
  • <nav>:定义导航链接。
  • <section>:定义文档中的节。
  • <summary>:定义<details>元素的标题。
  • <time>:定义日期或时间

 首页标题

非语义化示例:

<div class="header">
  <span class="title">Welcome to our website</span>
</div>

语义化示例:

<header>
  <h1>Welcome to our website</h1>
</header>

导航菜单

非语义化示例:

<div class="nav">
  <div class="item"><a href="/">Home</a></div>
  <div class="item"><a href="/about">About</a></div>
  <div class="item"><a href="/contact">Contact</a></div>
</div>

语义化示例中使用了<nav>标签表示导航菜单,并用<ul><li>标签表示列表项,以及<a>标签表示链接。这样的结构更具语义化,有利于屏幕阅读器和搜索引擎理解导航结构。

<nav>
  <ul>
    <li><a href="/">Home</a></li>
    <li><a href="/about">About</a></li>
    <li><a href="/contact">Contact</a></li>
  </ul>
</nav>

主要内容

非语义化示例:

<div class="main-content">
  <div class="section">
    <h3 class="sub-title">Section 1</h3>
    <p>Content of section 1...</p>
  </div>
  <div class="section">
    <h3 class="sub-title">Section 2</h3>
    <p>Content of section 2...</p>
  </div>
</div>

语义化示例: 语义化示例中使用了<main>标签表示页面的主要内容区域,并用<section>标签表示每个章节,使用<h2>标签表示每个章节的标题。这样的结构更清晰地表达了页面内容的层次结构。

<main>
  <section>
    <h2>Section 1</h2>
    <p>Content of section 1...</p>
  </section>
  <section>
    <h2>Section 2</h2>
    <p>Content of section 2...</p>
  </section>
</main>

脚注

非语义化示例:

<div class="footer">
  <div class="info">All rights reserved.</div>
  <div class="contact">Contact us at info@example.com</div>
</div>

语义化示例: 语义化示例中使用了<footer>标签表示页面的脚注部分,并用<p>标签表示段落内容。同时,使用<a>标签并添加href属性来创建可点击的链接。这样更有语义化,且有利于用户和搜索引擎的理解。

<footer>
  <p>All rights reserved.</p>
  <p>Contact us at <a href="mailto:info@example.com">info@example.com</a></p>
</footer>