HTML5语义元素及其用法

发布时间:2024-10

浏览量:71

本文字数:3089

读完约 11 分钟

1、语义元素发展背景

    随着互联网的飞速发展,网页设计不再仅仅追求视觉效果,而是更加注重内容的结构化和可访问性。HTML5正是这一趋势的产物,它引入了一系列全新的语义标签,旨在帮助开发者构建更加清晰、易于理解的网页结构。

    早期的网页开发是后端主导的,只会用简单的标签,甚至全盘用table进行布局;后来大家审美上有要求了,一批美工程序员上线了,用无数个<div></div> 构建整个页面,属实让人头大;再后来,也就是当下,为了构建清晰的HTML 结构、有利于团队的开发和维护,前端程序员需要用合适的标签表达对应的内容,HTML 语义化应运而生。

2、什么是语义元素?

    语义元素清楚地向浏览器和开发者描述其意义。语义是指对一个词或者句子含义的正确解释。很多html标签也具有语义的意义,也就是说元素本身传达了关于标签所包含内容类型的一些信息。

    例如,当浏览器解析到标签时,它将该标签解释为包含这一块内容的最重要的标题。h1标签的语义就是用它来标识特定网页或部分最重要的标题。

非语义元素的例子:<div> 和 <span> - 无法提供关于其内容的信息。

语义元素的例子:<form>、<table> 以及 <img> - 清晰地定义其内容。

3、语义元素的优点

    代码结构:使页面没有css的情况下,也能够呈现出很好的内容结构

    有利于SEO:爬虫依赖标签来确定关键字的权重,因此可以和搜索引擎建立良好的沟通,帮助爬虫抓取更多的有效信息

    提升用户体验:例如title、alt可以用于解释名称或者解释图片信息,以及label标签的灵活运用。

    便于团队开发和维护:语义化使得代码更具有可读性,让其他开发人员更加理解你的html结构,减少差异化。

    方便其他设备解析:如屏幕阅读器、盲人阅读器、移动设备等,以有意义的方式来渲染网页。

常用的语义元素:

image.png

4、HTML5中新的语义元素和用法

    许多网站包含了指示导航、页眉以及页脚的 HTML 代码,例如这些:<div id="nav"> <div class="header"> <div id="footer">。

    HTML5 提供了定义页面不同部分的新语义元素:

image.png

规定文档或节的页眉。

用于定义页面的介绍展示区域,通常包括网站logo、主导航、全站链接以及搜索框。也适合对页面内部一组介绍性或导航性内容进行标记。

<article>
   <header>
     <h1>What Does WWF Do?</h1>
     <p>WWF's mission:</p>
   </header>
   <p>WWF's mission is to stop the degradation of our planet's natural environment,
  and build a future in which humans live in harmony with nature.</p>
</article>


定义导航链接。<nav> 元素旨在定义大型的导航链接块。不过,并非文档中所有链接都应该位于 <nav> 元素中!

<nav>
<a href="/html/">HTML</a> |
<a href="/css/">CSS</a> |
<a href="/js/">JavaScript</a> |
<a href="/jquery/">jQuery</a>
</nav>



<main>

规定文档的主内容。

定义页面的主要内容,一个页面只能使用一次。如果是web应用,则包围其主要功能。

<main>
    <h1>My blog test</h1>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec viverra nec nulla vitae mollis.</p>
    <p>etc.</p>
</main>

<section>

定义文档中的节。

节(section)是有主题的内容组,通常具有标题。可以将网站首页划分为简介、内容、联系信息等节。

元素用于标记文档的各个部分,例如长表单文章的章节或主要部分。

<section>
   <h1>WWF</h1>
   <p>The World Wide Fund for Nature (WWF) is....</p>
</section>

<article>

元素规定独立的自包含内容。文档有其自身的意义,并且可以独立于网站其他内容进行阅读。应用场景(论坛、新闻、博客)

定义页面独立的内容,它可以有自己的header、footer、sections等,专注于单个主题的博客文章,报纸文章或网页文章。article可以嵌套article,只要里面的article与外面的是部分与整体的关系。

<article>
   <h1>What Does WWF Do?</h1>
   <p>WWF's mission is to stop the degradation of our planet's natural environment,
  and build a future in which humans live in harmony with nature.</p>
</article>

<aside>

元素页面主内容之外的某些内容(比如侧栏)。aside 内容应该与周围内容相关。

<aside>
     <h3>About the author</h3>
     <p>Frontend Designer from Bordeaux, currently working for Improbable in sunny London.</p>
</aside>


定义文档或节的页脚。

定义文档的底部区域,通常包含文档的作者,著作权信息,链接的使用条款,联系信息等

<footer>
    COPYRIGHT@dingFY_Demi
</footer>

<details>

定义用户能够查看或隐藏的额外细节。

<figure>

规定自包含内容,比如图示、图表、照片、代码清单等。

在书籍和报纸中,与图片搭配的标题很常见。标题(caption)的作用是为图片添加可见的解释。

通过 HTML5,图片和标题能够被组合在 <figure> 元素中:

<figure>
   <img src="pic_mountain.jpg" alt="The Pulpit Rock" width="304" height="228">
   <figcaption>Fig1. - The Pulpit Pock, Norway.</figcaption>
</figure>

<figcaption>:定义 <figure> 元素的标题。

<mark>

定义重要的或强调的文本。

<summary>

定义 <details> 元素的可见标题。

<time>

定义日期/时间。


5、常见问题与易错点

1. 滥用语义标签

问题:开发者有时会错误地将语义标签当作布局工具,比如用<section>替代传统的<div>来划分页面区域,即便这些区域并没有明显的逻辑分段。

避免:始终基于内容的语义来选择标签,确保每个标签的使用都符合其设计目的。


2. 忽略<main>的重要性

问题:<main>标签是标识文档主要内容的关键,但常常被遗漏,导致辅助技术难以识别页面的核心内容。

避免:确保每个页面都包含一个<main>标签,并且它直接包含于<body>之下,不含任何导航、广告或其他辅助内容。


3. 不恰当的嵌套与层级

问题:标签嵌套混乱,如在<header>或<footer>内部错误地嵌入<main>,或者过度使用<section>导致文档结构过于复杂。

避免:保持标签的使用简洁明了,遵循逻辑上的内容分组原则,避免不必要的嵌套。


4. 忽视辅助功能

问题:虽然语义标签有助于提升可访问性,但如果忽略为图片添加alt属性,或不对交互元素提供适当的ARIA角色,仍然会影响无障碍体验。

避免:确保所有图片都有描述性的alt文本,对于交互元素,合理使用ARIA属性来增强其可访问性。

^