在HTML5之前,主要的容器元素是div元素,但在HTML5中提供了数种其它容器元素供我们使用。

  因此,当组织Web页面结构时,首先使用HTML将内容分成多部分,然后在对其使用CSS应用样式和格式。

  HTML5添加了6个新的容器元素以及最初的div元素:

  • header:用于容纳文档或部分的标题,比如:标题、副标题、标语和导航;
  • footer:用于容纳文档或部分的页脚,比如:联系信息和版权数据;
  • nav:用于容纳文档或部分的重要导航元素;
  • aside:用于分组与主题无关的内容,比如:重要的引文、传记信息和相关链接;
  • section:用于分组与主题相关的内容,比如:一本书中的各章,通常可以作为数据库的一部分;
  • article:用于容纳可聚合的内容;
  • div:用于容纳通用的内容部分,主要出于对该部分内容应用样式表的目的。

  当开始创建页面内容的结构时,请记住这一点:同一个页面可以采用多种不同的分块方法。

  只要遵循W3C对容器的一般性指导原则,在什么地方使用哪一种容器元素,就具有一定的灵活性。

  (1)header元素和footer元素

  header元素和footer元素用于容纳一个页面主要的header和footer区域,也可以作为其它较小的header和footer部分。因此在单个页面上,实际上可以存在多个header和footer元素。

 <header>
Header content goes here
</header>
<footer>
Footer content goes here
</footer>

  (2)nav元素

  nav元素既可以单独使用,也可以放在其它部分之内。然而,将页面上的每一个超链接都包含在一个nav容器之中也并无必要。恰恰相反,<nav>标记中只应包含最重要的导航块。

 <nav>
Nav content goes here
</nav>

  (3)aside元素

  在HTML中,侧边栏(aside)就是与主文章(article)或部分(section)有关的一块内容,但它又不是页面主文档流的一部分。在最常见的情形下,aside元素中的内容是重要的引文、传记信息和相关的广告和链接。

 <aside>
Aside content goes here
</aside>

  (4)section元素和article元素

  二者都可以包含相同类型的内容,但仅有article元素指定具有聚合内容的用途。聚合内容的一些例子包括博客文章、新闻或杂志文章。与之相比,section元素更适合表示故事中的章节、Web网站常规的区块(比如:“关于我们”、“联系信息”、“公司历史”),以及其它非聚合的页面内容

 <section>
Section content goes here
<section>
<article>
article content goes here
</article>

  在单个Web页面中,可以具有多个section元素和article元素。另外,根据使用情形,这两个元素中的任意一个都可以嵌套在另一个元素中。

  假如我们正在创建一本在线图书,可以将该书中的每一章放在一个section元素中,然后将整本书放在一个article元素之中,用于内容聚合。

 <article>
<header>My Book<header>
<secition>Chapter 1 goes here</section>
<secition>Chapter 2 goes here</section>
<secition>Chapter 3 goes here</section>
</article>

  根据W3C的建议,section元素专门为要存储在数据库的一块内容而创建的。因此不应该将section元素作为容纳内容的通用容器。如果仅仅是出于定义样式的目的而寻找一个通用容器元素来包含内容,请改用div元素。

  (5)element + id

  如果使用这6种容器元素中的任何一种都没有明确的意义,那么你可以使用div元素,本质上div元素就是最通用的容器元素。请注意,没有必要一定要将内容区域强制性的放在HTML新增的这6种新元素中。对于页面的绝大多数甚至是所有内容区域,使用通用的div元素也完全可以接受,有时甚至更好。

  当在一个页面多次使用这些容器时,最好为每一个容器元素添加一个id特性,为每一个内容区域定义一个名称:

 <section id="introduction">
Section content goes here
<section>
<section id="summary">
Section content goes here
</section>

  在为分块定义了名称后,就可以在样式表中设置该区域的样式:

 #introduction {border:1px;}
#summary {font-family:Verdana; font-size:12pt;}

  (6)element + class

  如果想为多个区块定义相同的样式,可在容器元素的开始标记中,使用一个class属性来代替id属性:

 <article id="scienceBook">
<header>My Book<header>
<secition class="introChapter">Chapter 1 goes here</section>
<secition class="normalChapter">Chapter 2 goes here</section>
<secition class="normalChapter">Chapter 3 goes here</section>
</article>

  相应的样式表可以按照下面定义:

 #scienceBook {font-family:Verdana; font-size:2pt; color:green;}
.introChapter{border:double medium;}
.normalChapter{margin:2em;}

[HTML/HTML5]3 页面结构的更多相关文章

  1. 读书笔记:《HTML5开发手册》--HTML5新的结构元素

    读书笔记:<HTML5开发手册> (HTML5 Developer's CookBook) 虽然从事前端开发已有很长一段时间,对HTML5标签也有使用,但在语义化上面理解还不够清晰.之前在 ...

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

    本篇主要介绍HTML5增加的语义元素中关于页面结构方面的,包含: <article>.<aside>.<figure>.<figcaption>.< ...

  3. html5页面结构

    我是html5初学者,最近闲来无事,和各位一起学些下html5. 开发环境 jdk1.6,tomcat6,开发工具eclipse. 新建一个web工程,创建一个index.jsp页面.页面代码如下. ...

  4. 浅谈HTML5单页面架构(二)——backbone + requirejs + zepto + underscore

    本文转载自:http://www.cnblogs.com/kenkofox/p/4648472.html 上一篇<浅谈HTML5单页面架构(一)--requirejs + angular + a ...

  5. 【原】HTML5 新增的结构元素——能用并不代表对了

    做移动端有一段时间,今天有同事问了我 article 和 section 标签的使用,模模糊糊的解释了下,他似懂非懂,有点小尴尬.忽然间觉得自己有必要再翻翻书籍,重温下 html5 的新元素.html ...

  6. 玩转HTML5移动页面

    (1) 动画雪碧图涉及的动画十分多,用的元素也十分多,请务必使用雪碧图(Sprite)!网上的工具有一些可以帮助你生成雪碧图的工具,例如CssGaga,GoPng等等,自动化构建工具Grunt和Gul ...

  7. 玩转HTML5移动页面(优化篇)

    原文:http://www.grycheng.com/?p=472 承接上文<玩转HTML5移动页面(动效篇)>,上次说的是让页面动起来的一些小技巧.而页面动起来的根基是功能可用的页面,因 ...

  8. 玩转HTML5移动页面(动效篇)

    原文:http://www.grycheng.com/?p=458 作为一名前端,在拿到设计稿时你有两种选择: 1.快速输出静态页面 2.加上高级大气上档次狂拽炫酷屌炸天的动画让页面动起来 作为一个有 ...

  9. 玩转HTML5移动页面(优化篇)

    标签:h5 页面优化收藏 热门分享 网页设计师必备的 酷站收藏网站 2013年不容错过的app ui素材 40个漂亮的扁平化网页设计欣赏 国内网页设计公司网站欣赏 55套网页设计常用的psd格式UI ...

随机推荐

  1. rabbimq连接问题处理

    今天遇到一个rabbitmq的连接问题,之前自己写代码测试的时候并没有出现过,所以做个小总结,由于是其他项目测试部署环境发现的问题,所以一开始排查还是有点坑... 客户端上新建一个rabbitmq的c ...

  2. java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

    参考: http://www.cnblogs.com/sunxucool/archive/2013/06/07/3124380.html   ---------------------------&g ...

  3. arm 2440 linux 应用程序 nes 红白机模拟器 第2篇 InfoNES

    InfoNES 支持 map ,声音,代码比较少,方便 移值. 在上个 LiteNES  的基础上,其实不到半小时就移值好了这个,但问题是,一直是黑屏.InfoNES_LoadFrame ()  Wo ...

  4. 向STM32 CUBE MX 生成的工程里移植stemwin

    我参考这个文章做的: http://bbs.armfly.com/read.php?tid=1678 这次添加的是没有os的版本 另外跟用不用hal库没关系 1. keil自带了emwin 2. 用c ...

  5. 基于opencv和mfc的摄像头采集代码(GOMFCTemplate2)

            编写带界面的图像处理程序,选择opencv+mfc是一种很好的选择:在读取摄像头数据方面,网上的方法很多,其中shiqiyu的camerads的方法是较好的.       基于现有资料 ...

  6. Redhat、CentOS添加静态路由的标准方法

    我们经常遇到需要在系统默认路由的基础上,额外添加静态路由的需求.为了使得下次系统启动这些静态路由依旧生效,我们可能采取在rc.loal里加入route命令追加静态路由的方法. 现在给大家推荐Redha ...

  7. JITComVCTK无法访问

    源代码第一次加载时会遇到JITComVCTK无法访问的问题,这是因为没有注册该第三方插件,需要到文件夹"\CommonFiles\dll\JITComVCTK"下注册,具体方式: ...

  8. idea打包java可执行jar包

    1,在项目上鼠标右键 --> Open Module Settings 2, Artifacts --> + --> JAR --> From modules with dep ...

  9. bate阶段项目总结

    Beta里程碑总结 设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 要解决的问题是如何实现消息的发布与查看以及个人主页的实现:定义的基本清楚,团队 ...

  10. 关于margin的一些问题

    引 在平时处理样式的过程中,会出现各种问题.比如: 包含在父元素中的子元素设置了浮动,子元素高度变化的时候父元素的高度没有随着变化,就是没有被撑高,父元素仍然是原来设置的那个高度 包含在父元素中的子元 ...