HTML语义化理解与心得 | 青训营

213 阅读6分钟

参加「第六届青训营」笔记创作活动第1天

主题:HTML语义化的案例分析

一、HTML语义化引入

HTML语义化是指使用恰当的HTML元素来描述网页内容的方法,以便于浏览器、搜索引擎和开发者更好地理解和处理网页。 HTML语义化有如下优点:增强可访问性提升SEO效果代码可维护性跨平台兼容性等等,HTML语义化是一种良好的编码实践,有助于改善网页的可读性、可访问性、搜索引擎优化效果和代码可维护性。 通过恰当地使用HTML标签和结构,我们可以构建更好的网页用户体验和更高质量的代码。

二、HTML语义化举例分析

假设我们正在创建一个新闻文章的网页,其中包含文章标题、作者、发布日期、正文和评论。

  • 标题

    在HTML中,使用<h1><h6>元素来表示标题级别。对于新闻文章的主标题,我们可以使用<h1>元素,例如:

     <h1>这是新闻文章的标题</h1>
    
  • 作者和发布日期

    对于作者和发布日期,我们可以使用<p>元素来包裹它们,并使用适当的语义化标签来进一步描述它们的含义,例如:

     <p>作者:<span class="author">Polaris</span></p>
     <p>发布日期:<time datetime="2023-08-02">August 2, 2023</time></p>
    

    在上面的代码中,我们使用<span>元素来标记作者姓名,并使用<time>元素来表示发布日期,并通过datetime属性指定日期的机器可读格式。

  • 正文

    对于文章的正文部分,我们可以使用<article>元素来表示整个文章,而每个段落则可以使用<p>元素,例如:

     <article>
       <p>这是文章的第一段落。</p>
       <p>这是文章的第二段落。</p>
       <!-- 更多段落... -->
     </article>
    

    使用<article>元素在语义上表示这是一个独立的内容单元,有助于搜索引擎和辅助技术理解文章的结构

  • 评论

    最后,对于文章的评论部分,我们可以使用<section>元素来表示评论区域,并使用<article>元素包裹每个评论,例如:

     <section>
       <h2>评论</h2>
       <article>
         <p>评论1的内容...</p>
         <p>评论1的作者和时间...</p>
       </article>
       <article>
         <p>评论2的内容...</p>
         <p>评论2的作者和时间...</p>
       </article>
       <!-- 更多评论... -->
     </section>
    

    使用<section>元素表示评论是整个页面的一个主题区域,而使用<article>元素则表示每个评论是一个独立的内容单元。

通过以上的案例分析,我们可以看到如何运用HTML语义化的原则更好地描述网页内容的结构和含义。这样可以提高页面的可读性、可访问性和搜索引擎优化,使其更易于理解和解释

三、实际案例分析

以淘宝网为例分析如下:

h1.png<h1>标签包裹淘宝LOGO,表明这个LOGO是整个页面中比较重要的内容,搜索引擎爬虫抓取时更加容易抓取到淘宝网,这也是语义化能提升SEO效果原因

h2.png

h3.png

我们可以发现,通过<h1>~<h6>系列标签,可以划分淘宝网页面各部分的重要性,无论是开发者还是搜索引擎,对此都能有更好的理解和读取

四、HTML5新增

在HTML5标准中更加讲究语义化了,借用一张网上的图片来说明这些新标签

HTML5.png

  • header元素:header 元素代表“网页”或“section”的页眉。
  • footer元素:footer元素代表“网页”或“section”的页脚,通常含有该节的一些基本信息,譬如:作者,相关文档链接,版权资料。
  • nav元素:nav元素代表页面的导航链接区域。用于定义页面的主要导航部分。
  • aside元素:aside元素被包含在article元素中作为主要内容的附属信息部分,其中的内容可以是与当前文章有关的相关资料、标签、名次解释等。(特殊的section)
  • section元素:section元素代表文档中的“节”或“段”,“段”可以是指一篇文章里按照主题的分段;“节”可以是指一个页面里的分组。section通常还带标题,虽然html5中section会自动给标题h1-h6降级,但是最好手动给他们降级。
  • article元素:article元素最容易跟section和div容易混淆,其实article代表一个在文档,页面或者网站中自成一体的内容,其目的是为了让开发者独立开发或重用。譬如论坛的帖子,博客上的文章,一篇用户的评论,一个互动的widget小工具。(特殊的section)除了它的内容,article会有一个标题(通常会在header里),会有一个footer页脚。

五、基于HTML5新标签对比分析非语义化标签的差异

假设我们正在创建一个个人简历的网页,其中包含姓名、联系方式、教育经历和工作经历。

  • 使用语义化标签的情况:

     <header>
       <h1>个人简历</h1>
     </header>
     ​
     <section>
       <h2>基本信息</h2>
       <ul>
         <li>姓名:张三</li>
         <li>联系方式:1234567890</li>
       </ul>
     </section>
     ​
     <section>
       <h2>教育经历</h2>
       <article>
         <h3>大学A</h3>
         <p>学位:计算机科学</p>
         <p>时间:2015-2019</p>
       </article>
     </section>
     ​
     <section>
       <h2>工作经历</h2>
       <article>
         <h3>公司X</h3>
         <p>职位:前端工程师</p>
         <p>时间:2019-2021</p>
       </article>
     </section>
     ​
     <footer>
       <p>版权所有 © 2023 张三</p>
     </footer>
    
  • 非语义化标签的情况:

     <div id="header">
       <h1>个人简历</h1>
     </div>
     ​
     <div id="basic-info">
       <h2>基本信息</h2>
       <p><strong>姓名:</strong>张三</p>
       <p><strong>联系方式:</strong>1234567890</p>
     </div>
     ​
     <div id="education">
       <h2>教育经历</h2>
       <div class="article">
         <h3>大学A</h3>
         <p><strong>学位:</strong>计算机科学</p>
         <p><strong>时间:</strong>2015-2019</p>
       </div>
     </div>
     ​
     <div id="work-experience">
       <h2>工作经历</h2>
       <div class="article">
         <h3>公司X</h3>
         <p><strong>职位:</strong>前端工程师</p>
         <p><strong>时间:</strong>2019-2021</p>
       </div>
     </div>
     ​
     <div id="footer">
       <p>版权所有 © 2023 张三</p>
     </div>
    

分析如下: 上述案例中,我们使用了语义化标签和非语义化标签来表示相同的内容。以下是它们之间的差异:

  • 可读性:语义化标签使得HTML结构更加清晰和易读,可以让开发者和其他人更轻松地理解网页的结构和含义。而非语义化标签则没有明确的语义,需要通过CSS类名或ID来表达其目的,可读性相对较差。
  • 可访问性:语义化标签有助于提升网页的可访问性,使得辅助技术(如屏幕阅读器)能够更好地解析和呈现网页内容,使其对视障人士更加友好。非语义化标签则可能缺乏明确的语义,降低了可访问性。
  • 搜索引擎优化:语义化标签有助于搜索引擎理解网页的结构和内容,提高网页在搜索结果中的排名和曝光度。而非语义化标签则可能无法提供足够的信息给搜索引擎,影响搜索引擎优化效果。

总体而言,使用HTML语义化标签可以提供更明确、更易读、更可访问和更有利于搜索引擎优化的网页结构。它能够增强网页的可理解性和可用性,为用户和开发者提供更好的体验。因此,在开发过程中,推荐尽可能使用语义化标签来描述网页内容。