前端知识体系
GitHub (opens new window)

GuoLiBin6

程序员永不下班
GitHub (opens new window)
  • 介绍
  • 前端基础

    • CSS

    • JavaScript

    • HTML

      • 语义化
        • 1. 什么是HTML语义化
        • 2. 为什么要语义化
        • 3. 写HTML代码时应该注意什么?
        • 4. HTML5语义标签
          • HTML5语义化标签使用
          • header
          • footer
          • hgroup
          • nav
          • aside
          • section
          • article
          • figure
          • figcaption
          • time
          • address
          • progress
          • meter
          • details 和 summary
  • 浏览器基础

  • 软件开发

  • 数据结构

  • 性能优化

  • Node.js

  • 收录

  • 搞事啦

  • 前端知识体系
  • 前端基础
  • HTML
GuoLiBin6
2023-04-25
目录

语义化

# 1. 什么是HTML语义化

基本上都是围绕着几个主要的标签,像标题(H1~H6)、列表(li)、强调(strong)等等。

根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时,让浏览器的爬虫和机器很好地解析。

# 2. 为什么要语义化

  • 为了在没有 CSS 的情况下,页面也能呈现出很好地内容结构、代码结构:为了裸奔时好看;

  • 用户体验:例如 title、alt 用于解释名词或解释图片信息、label 标签的活用;

  • 有利于 SEO 搜索引擎优化:和搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重;

  • 方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页;

  • 便于团队开发和维护,语义化更具可读性,是下一步吧网页的重要动向,遵循 W3C 标准的团队都遵循这个标准,可以减少差异化。

# 3. 写HTML代码时应该注意什么?

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

  • 在语义不明显时,既可以使用 div 或者 p 时,尽量用 p, 因为p在默认情况下有上下间距,对兼容特殊终端有利;

  • 不要使用纯样式标签,如:b、font、u等,改用 css 设置。

  • 需要强调的文本,可以包含在 strong 或者 em 标签中(浏览器预设样式,能用 CSS 指定就不用他们),strong 默认样式是加粗(不要用 b),em 是斜体(不用 i);

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

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

  • 每个 input 标签对应的说明文本都需要使用 label 标签,并且通过为 input 设置 id 属性,在 lable 标签中设置 for=someld 来让说明文本和相对应的 input 关联起来。

# 4. HTML5语义标签

在 HTML5 出来之前,我们用 div 来表示页面章节,但是这些 div 都没有实际意义。(即使我们用 css 样式的 id 和 class 形容这块内容的意义)。这些标签只是我们提供给浏览器的指令,只是定义一个网页的某些部分。但现在,那些之前没“意义”的标签因为因为 html5 的出现消失了,这就是我们平时说的“语义”

HTML5 元素标签包括 body article nav aside section header footer hgroup ,还有h1-h6 address。

  • address 代表区块容器,必须是作为联系信息出现,邮编地址、邮件地址等等,一般出现在 footer。

  • h1-h6 因为 hgroup,section 和 article 的出现,h1-h6 定义也发生了变化,允许一张页面出现多个 h1。

但是也不要因为 html5 新标签的出现,而随意用之,错误的使用肯定会事与愿违。所以有些地方还是要用 div 的,就是因为div没有任何意义的元素,他只是一个标签,仅仅是用来构建外观和结构。因此是最适合做容器的标签。

# HTML5语义化标签使用

# header

header 元素代表“网页”或“section”的页眉。

通常包含 h1-h6 元素或 hgroup,作为整个页面或者一个内容块的标题。也可以包裹一节的目录部分,一个搜索框,一个 nav,或者任何相关 logo。

# footer

footer 元素代表“网页”或“section”的页脚,通常含有该节的一些基本信息,譬如:作者,相关文档链接,版权资料。如果 footer 元素包含了整个节,那么它们就代表附录,索引,提拔,许可协议,标签,类别等一些其他类似信息。

# hgroup

hgroup 元素代表“网页”或“section”的标题,当元素有多个层级时,该元素可以将 h1 到 h6 元素放在其内,譬如文章的主标题和副标题的组合

hgroup 使用注意:

  • 如果只需要一个 h1-h6 标签就不用 hgroup

  • 如果有连续多个 h1-h6 标签就用 hgroup

  • 如果有连续多个标题和其他文章数据,h1-h6 标签就用 hgroup包住,和其他文章元数据一起放入 header 标签

# nav

nav 元素代表页面的导航链接区域。用于定义页面的主要导航部分。 但是我在有些时候却情不自禁的想用它,譬如:侧边栏上目录,面包屑导航,搜索样式,或者下一篇上一篇文章,但是事实上规范上说 nav 只能用在页面主要导航部分上。页脚区域中的链接列表,虽然指向不同网站的不同区域,譬如服务条款,版权页等,这些 footer 元素就能够用了。

<nav> 
    <ul> 
        <li>HTML 5</li> 
        <li>CSS3</li> 
        <li>JavaScript</li> 
    </ul> 
</nav> 
1
2
3
4
5
6
7

# aside

aside 元素被包含在 article 元素中作为主要内容的附属信息部分,其中的内容可以是与当前文章有关的相关资料、标签、名次解释等。(特殊的 section)

在 article 元素之外使用作为页面或站点全局的附属信息部分。最典型的是侧边栏,其中的内容可以是日志串连,其他组的导航,甚至广告,这些内容相关的页面。

<article> 
    <p>内容</p> 
    <aside> 
        <h1>作者简介</h1> 
        <p>前端一枚</p> 
    </aside> 
</article> 
1
2
3
4
5
6
7

aside使用总结:

  • aside 在 article 内表示主要内容的附属信息;

  • 在 article 之外则可做侧边栏,没有 article 与之对应,最好不用;

  • 如果是广告,其他日志链接或者其他分类导航也可以用。

# section

section 元素代表文档中的“节”或“段”,“段”可以是指一篇文章里按照主题的分段;“节”可以是指一个页面里的分组。

section 通常还带标题,虽然 html5 中 section 会自动给标题 h1-h6 降级,但是最好手动给他们降级。如下:

<section> 
    <h1>section是啥?</h1> 
    <article> 
        <h2>关于section</h1> 
        <p>section的介绍</p> 
        <section> 
            <h3>关于其他</h3> 
            <p>关于其他section的介绍</p> 
        </section> 
    </article> 
</section> 
1
2
3
4
5
6
7
8
9
10
11

section使用注意:

  • 一张页面可以用 section 划分为简介、文章条目和联系信息。不过在文章内页,最好用 article;

  • section 不是一般意义上的容器元素,如果想作为样式展示和脚本的便利,可以用 div 表示文档中的节或者段;

  • article、nav、aside可以理解为特殊的section,所以如果可以用article、nav、aside就不要用section,没实际意义的就用div。

# article

article 元素最容易跟 section 和 div 容易混淆,其实 article 代表一个在文档,页面或者网站中自成一体的内容,其目的是为了让开发者独立开发或重用。譬如论坛的帖子,博客上的文章,一篇用户的评论,一个互动的 widget 小工具。(特殊的 section)

除了它的内容,article 会有一个标题(通常会在 header 里),会有一个 footer 页脚。我们举几个例子介绍一下 article,好更好区分 article、section、div

<article> 
    <h1>一篇文章</h1> 
    <p>文章内容..</p> 
    <footer> 
        <p><small>版权:html5jscss网所属,作者:程序员</small></p> 
    </footer> 
</article> 
1
2
3
4
5
6
7

# figure

定义一组相关的媒体内容,通常包含图像、插图、音频、视频等内容。

# figcaption

为 figure 元素定义标题或说明文本。

# time

定义日期和时间,可以用于表示发布时间、活动时间等。

# address

定义联系信息,通常用于表示作者的联系信息或者文章的联系信息。

# progress

定义进度条,可以用于表示加载进度、任务进度等。

# meter

定义度量衡,可以用于表示测量值、比率等

# details 和 summary

定义详情和摘要,用于表示可折叠的内容。

上次更新: 2023-04-25 19:56:18
let const
浏览器中的EventLoop

← let const 浏览器中的EventLoop→

最近更新
01
蛤蟆先生去看心理医生
04-12
02
梁永安:阅读、游历和爱情
03-20
03
阿甘正传
02-07
更多文章>
Theme by Vdoing | Copyright © 2022-2024 GuoLiBin6
冀ICP备2022013865号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式