HTML5 结构之美(3) - 结构标签综合运用

前面我们介绍了在 HTML5 中新增的结构标签,以及这些标签的定义和使用方法。接下来,让我们看一下在 HTML5 中进行总体页面布局的时候,具体应该怎样来综合运用这些结构标签。

大纲

通过使用新的结构标签,HTML5 的文档结构比大量使用 div 标签的 HTML4 的文档结构要清晰、明确了很多。如果再规划好文档结构的大纲,就可以创建出对阅读者或屏幕阅读程序来说,都很清晰易读的文档结构。

所谓大纲,简单来说就是文档中各内容区块的结构编排。内容区块可以使用标题标签(h1~h6)来展示各级内容区块的标题。综合运用各级内容区块的标题创建好文档的目录后,该目录就是一个大纲了。

关于内容区块的编排,可以分为“显示编排”与“隐式编排”两种方式。

1、显示编排内容区块

显示编排是指明确使用 section 等标签创建文档结构,在每个内容区块内使用标题(h1~16、hgroup等),如下代码所示:

<body>
    <h1>网页级内容区块标题</h1>
    <p>网页级内容区块的正文</p>
    <section>
        <h2>section 级内容区块的标题</h2>
        <p>section 级内容区块的正文</p>
    </section>
</body>

2、隐式编排内容区块

所谓隐式编排,是指不明确使用 section 等标签,而是根据页面中所书写的各级标题(h1~h6、hgroup)等把内容区块自动创建出来。因为 HTML5 分析器只要看到书写了某个级别的标题,就会判断存在相对于的内容区块。以下代码为一个隐式编排内容区块的示例:

<body>
    <h1>网页级内容区块标题</h1>
    <p>网页级内容区块的正文</p>
    <!--分析器根据 h2 等标签判断生成内容区块-->
    <h2>section 级内容区块的标题</h2>
    <p>section 级内容区块的正文</p>
</body>

将这两种编排方式进行对比、很明显,显示编排更加清晰、异度。

3、标题分级

不同的标题有不同的级别,h1 的级别最高,h6 的级别最低。隐式编排时如下规则自动生成内容区块:

如果新出现的标题比上一个标题级别低,生成下级内容区块。
        如果新出现的标题比上一个标题级别高或级别相等,生成新的内容区块。

第一条规则的示例与前面一样,现在我们来看关于第二条规则的示例:

<body>
    <section>
        <h2>section 级别的内容区块的标题</h2>
        <p>section 级别的内容区块的正文</p>
        <!--因为下面的标题级别比上一个标题级别高,所以自动创建新的内容区块-->
        <h1>新的 section 级别的内容区块的标题</h1>
        <p>新的 section 级别的内容区块的正文</p>
    </section>
</body>

如果把上一个示例改成显示编排,如下代码所示:

<body>
    <section>
        <h2>section 级别的内容区块的标题</h2>
        <p>section 级别的内容区块的正文</p>
    </section>
    <section>
        <h1>新的 section 级别的内容区块的标题</h1>
        <p>新的 section 级别的内容区块的正文</p>
    </section>
</body>

因为隐式编排容易让自动生成的整个文档结构与想要的文档结构不一样,而且也容易引起文档结构的混乱,所以请尽量使用显示编排。

4、不同的内容区块可以使用相同级别的标题

另外,不同的内容区块可以使用相同级别的标题。例如,父内容区块与子内容区块可以使用相同级别的h1。这样做的好处是:每个级别的标题都可以单独设计,如果既需要“整个网页的标题”,又需要“文章的标题”,这样做将会带来很大的便利性,如下代码所示:

<body>
    <h1>网页的标题</h1>
    <article>
        <header>
            <hgroup>
                <h1>文章标题</h1>
                <h2>文章子标题</h2>
            </hgroup>
        </header>
        <p>文章正文</p>
    </article>
</body>

综合示例

基于前面提到的知识点,让我们通过一个示例来看应该怎样排版网页的内容,以下代码为一个标准博客网页的示例,在这个示例中,具备了一个标准博客网页所具备的基本要素。

<!DOCTYPE html>
<html>
<head>
    <title>网页编排示例</title>
    <meta charset="utf-8" />
</head>

<body>
    <!-- 头部 -->
    <header>
        <!-- 网页标题 -->
        <h1>网页标题</h1>

        <!-- 导航链接 -->
        <nav>
            <ul>
                <li><a href="index.html">首页</a></li>
                <li><a href="help.html">帮助</a></li>
            </ul>
        </nav>
    </header>

    <!-- 文章 -->
    <article>
        <!-- 文章标题 -->
        <hgroup>
            <h1>文章主标题</h1>
            <h2>文章子标题</h2>
        </hgroup>

        <!-- 文章正文 -->
        <p>文章正文。。。</p>

        <!-- 文章评论 -->
        <section class="comments">
            <article>
                <h5>评论标题</h5>
                <p>评论正文</p>
            </article>
        </section>
    </article>

    <!-- 版权 -->
    <footer>
        <p>版权所有:XXX</p>
    </footer>
</body>
</html>

在这个示例中,使用了嵌套 article 标签的方式,将关于评论的 article 标签嵌套在了主 article 标签中,在 HTML5 中,推荐使用这种方式。

时间: 2024-10-23 02:01:16

HTML5 结构之美(3) - 结构标签综合运用的相关文章

HTML5 结构之美(2) - 新增的非主体结构标签

接上文<HTML5 结构之美(1) - 新增的主体结构标签>,HTML5 还新增了一些表示逻辑结构或附加信息的非主体结构标签. header标签 header 标签是一种具有引导和导航作用的结构标签,通常用来放置整个页面或页面内的一个内容区块的标题,但也可以包含其他内容,例如数据表格.搜索表单或相关的 logo 图片. 很明显,整个页面的标题应该放在页面的开头,我们可以用如下所示的形式书写页面的标题: <header><h1>页面标题</h1></he

html5学习笔记(3)--主题结构元素-1

html5学习笔记(3)--主题结构元素-1 Article元素 以下为对应代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <article> <header> <h1>极客学院</h

HTML5标准学习 - 文档结构

说起HTML的结构,很多人都能说得头头是道,一般来说答案可能是这样的: 一个DOCTYPE,一个html,里面有head和body元素. 这当然不能说是不正确的,但是如果问到一个最小的HTML源文件必须有哪一些东西的话,恐怕很少有人能正确地做出回答. 先来回答一下这个问题,一个最简的HTML5源码文件需要的内容如下: <!DOCTYPE html> 是的,就这样,一个字符不多,一个字符不少,除了大小写可任意变化外,其他的任何内容都是不能变动的. 那么究竟是怎么样的规则,导致一个最简的源码文件必

HTML5 语义元素(一)页面结构

本篇主要介绍HTML5增加的语义元素中关于页面结构方面的,包含: <article>.<aside>.<figure>.<figcaption>.<footer>.<header>.<main>.<nav>.<section>等元素. 目录 1. 语义元素介绍 1.1 何为语义元素 1.2 特点 2. 原先界面布局 3. 页面结构语意元素 3.1 说明 3.2 详细介绍 3.3 示例图 1. 语义元

HTML5:组织文档结构

文档部分,即body部分,包含了访问者可以看到的内容.传统的HTML文档通常通过div元素来组织文档结构,再配上适当的样式表.但div元素的问题是缺少语义信息,在查看别人的源代码时,必须费点劲才能理解哪个div表示什么,整个页面时怎么搭建起来的,通常需要在HTML页面.样式表和浏览器之间跳来跳去.特别是如果HTML页面的组织结构不好,很容易就会导致困惑.对此,HTML5中新增了许多语义元素,用来替换div元素,并且将语义和呈现分离.所有的语义元素都有一个显著的特点:不真正做任何事,它们在外观上对

HTML5学习之文档结构和语义(一)

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <!--he

Java的结构之美【2】——销毁对象

先来看一段代码: import java.util.Arrays; import java.util.EmptyStackException; /** * 2014年6月28日09:31:59 * @author 阳光小强 * */ public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITAL_CAPACITY = 15; public S

结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、斜堆

实现优先队列结构主要是通过堆完成,主要有:二叉堆.d堆.左式堆.斜堆.二项堆.斐波那契堆.pairing 堆等. 1. 二叉堆 1.1. 定义 完全二叉树,根最小. 存储时使用层序. 1.2. 操作 (1). insert(上滤) 插入末尾 26,不断向上比较,大于26则交换位置,小于则停止. (2). deleteMin(下滤) 提取末尾元素,放在堆顶,不断下滤: (3). 其他操作: 都是基于insert(上滤)与deleteMin(下滤)的操作. 减小元素:减小节点的值,上滤调整堆. 增大

Java的结构之美【1】——构造对象

当我们遇到多个构造器参数的时候可能会想到用构件器,代码如下: /** * 构建器 * @author 阳光小强 * */ public class Lunch { private String cake; private String meat; private String milk; private String drink; public Lunch(){ this(null); } public Lunch(String meat){ this(null, meat, null); }