zoukankan      html  css  js  c++  java
  • 第一章 1.6 HTML5 的新功能(一)

    在讨论 HTML5 编程之前,让我们快速预览一下 HTML5 的新功能。

    1.6.1新的 DOCTYPE 和字符集

    首先,根据 HTML5 设计准则的第 3 条——化繁为简,Web 页面的 DOCTYPE 被极大地简化了。以下面这段 HTML4 DOCTYPE 代码为例进行对比:
    <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” ”http://www.w3.org/TR/html4/loose.dtd”>
    谁能记得住?所以在新建页面的时候,我们往往只能通过复制粘贴的方式添加这么长的DOCTYPE,同时脑子里还不确定复制的对不对。HTML5 干净利索地解决了这个问题:
    <!DOCTYPE html>
    现在的 DOCTYPE 好记多了。跟 DOCTYPE 一样,字符集的声明也被简化了。过去是这样的:
    <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
    现在成了:
    <meta charset=”utf-8″>
    使用新的 DOCTYPE 后,浏览器默认以标准模式(standards mode)显示页面。例如, Firefox用打开一个 HTML5 页面,然后点击“ 工具➤页面信息” (Tools ➤ Page Info),会看 到图 1-1 所示的画面。示例页面是以标准模式显示的。使用 HTML5 的 DOCTYPE 会触发浏览器以标准兼容模式显示页面。众所周知,Web 页面有多种显示模式,比如怪异模式(Quirks) 近标准模式、(Almost Standards)以及标准模式(Standards)。其中标准模式也被称为非怪异模式(no-quirks) 浏览器会根据 DOCTYPE 来识别该使用哪种模式,。以及使用什么规则来验证页面。在怪异模式下,浏览器会尽量不中断页面显示,即使没有完全通过验证也会将其显示出来。HTML5 引入了新的标记元素和其他机制(随后会详细讨论),因此如果坚持使用已废弃的元素,那么页面将无法通过验证。

    1.6.2 新元素和旧元素

    HTML5 引入了很多新的标记元素,根据内容类型的不同,这些元素被分成了 7 大类。见表1-1。

    HTML5的内容类型

    内容类型描述
    内嵌 向文档中添加其他类型的内容,例如audio、video、canvas和iframe等
    在文档和应用的body中使用的元素,例如form、h1和small等
    标题 段落标题,例如h1、h2和hgroup等
    交互 与用户交互的内容,例如音频和视频的控件、button和texta
    元数据 通常出现在页面的head中,设置页面其他部分的表现和行为,例如script、style
    短语 文本和文本标记元素,例如mark、kbd、sub和sup等
    片段 用于定义页面片段的元素,例如article、aside和title等

    上述所有类型的元素都可以通过 CSS 来设定样式。此外,虽然其中一些元素,如 canvas、audio 和 video,在使用时往往需要其他 API 来配合,以实现细粒度控制,但它们同样可以直接使用。我们在后续章节中详细讨论这类元素 API。限于篇幅,本书讨论的内容无法涵盖所有新元素,不过片段类元素是全新的,我们会在下一节讨论,而 canvas、audio 和 video 作为 HTML5 新增的元素也会在后续章节中详细讨论。

    同样地,对于旧的标签元素,网上的资料已经很多了,我们不会把所有旧的标签元素都罗列出来。不过需要注意的是,HTML5 中移除了很多在行内设样式的标记元素,如 big、center、font 和 basefont 等,以鼓励开发人员使用 CSS。

    1.6.3 语义化标记

    片段类的内容类型包含许多 HTML5 元素。HTML5 定义了一种新的语义化标记来描述元素的内容。虽然语义化标记不会让你马上感受到有什么好处,但是它可以简化 HTML 页面设计,并且将来搜索引擎在抓取和索引网页的时候,也绝对会利用到这些元素的优势。前面我们说过,HTML5 的宗旨之一就是存在即合理。Google 分析了上百万的页面,从中发现了 DIV 标签的通用 ID 名称重复量很大。例如,很多开发人员喜欢使用 DIV id=”footer”来标记页脚内容,所以 HTML5 引入了一组新的片段类元素,在目前主流的浏览器中已经可以用了。

     1-2 HTML5中新的片段类元素

    元素名描述
    header 标记头部区域的内容(用于整个页面或页面中的一块区域)
    footer 标记脚部区域的内容(用于整个页面或页面中的一块区
    section Web页面中的一块区域
    article 独立的文章内
    aside 相关内容或者引文
    nav 导航类辅助内容

    上面所有的元素都能用 CSS 设定样式。之前说到了 HTML5 效率优先的设计理念,它推崇表现和内容的分离,所以在 HTML5 的实际编程中,开发人员必须使用 CSS 来定义样式。代码清单1-1 是一个 HTML5 页面的概貌,其中使用了新的 DOCTYPE、字符集和语义化标记元素——新的片段类元素。示例代码对应的源码在 code/intro 文件夹中。

    代码清单 1-1 HTML5 示例页面

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4 <meta charset="utf-8" >
     5 <title>HTML5</title>
     6 <link rel="stylesheet" href="html5.css">
     7 </head>
     8 <body>
     9 <header>
    10     <h1>Header</h1>
    11     <h2>Subtitle</h2>
    12     <h4>HTML5 Rocks!</h4>
    13 </header>
    14 <div id="container">
    15     <nav>
    16         <h3>Nav</h3>
    17         <a href="http://www.example.com">Link 1</a> 
    18         <a href="http://www.example.com">Link 2</a>
    19         <a href="http://www.example.com">Link 3</a>
    20     </nav>
    21     <section>
    22         <article>
    23             <header>
    24                 <h1>Article Header</h1>
    25             </header>
    26             <p>Lorem ipsum dolor HTML5 nunc aut nunquam sit amet, consectetur adipiscing elit. Vivamus at est eros, vel fringilla urna.</p>
    27             <p>Per inceptos himenaeos. Quisque feugiat, justo at vehicula pellentesque, turpis lorem dictum nunc.</p>
    28             <footer>
    29                 <h2>Article Footer</h2>
    30             </footer>
    31         </article>
    32         <article>
    33             <header>
    34                 <h1>Article Header</h1>
    35             </header>
    36             <p>HTML5: "Lorem ipsum dolor nunc aut nunquam sit amet, consectetur adipiscing elit. Vivamus at est eros, vel fringilla urna. Pellentesque odio</p>
    37             <footer>
    38                 <h2>Article Footer</h2>
    39             </footer>
    40         </article>
    41     </section>
    42     <aside>
    43         <h3>Aside</h3>
    44         <p>HTML5: "Lorem ipsum dolor nunc aut nunquam sit amet, consectetur adipiscing elit. Vivamus at est eros, vel fringilla urna. Pellentesque odio rhoncus</p>
    45     </aside>
    46     <footer>
    47         <h2>Footer</h2>
    48     </footer>
    49 </div>
    50 </body>
    51 </html>

    没有样式的页面看起来有些枯燥乏味。代码清单1-2是一些可以用来设置内容样式的 CSS 代码。需要注意的是,这份样式表使用了 CSS3的一些新特性,比如圆角(border-radius)和旋转变换(transform:rotate();)。CSS3同 HTML5一样也正在开发过程中,并且为了便于浏览器逐步支持,也采用了模块化的方式发布子规范(例如变换(transformation) 动画、(animation)和过渡(transition)分别对应不同的子规范)。

    CSS3 的规范很可能还会变动,CSS3 中的功能也处于实验期,因此为了避免命名空间冲突,这些功能都会加上浏览器厂商的前缀。要显示圆角、渐变(gradients)、阴影(shadows)和变形(transformations)的话,需要在声明的部分加上前缀:-moz-(Mozilla 浏览器)、o-(Opera 浏览器)和-webkit-(Safari 和 Chrome 等基于 WebKit 核心的浏览器)。代码清单 1-2 HTML5 页面对应的 CSS 文件

    body {
     background-color:#CCCCCC;
     font-family:Geneva, Arial, Helvetica, sans-serif;
     margin: 0px auto;
     max-width:900px;
     border:solid;
     border-color:#FFFFFF;
    }
    header {
     background-color: #F47D31;
     display:block;
     color:#FFFFFF;
     text-align:center;
    }
    header h2 {
     margin: 0px;
    }
    h1 {
     font-size: 72px;
     margin: 0px;
    }
    h2 {
     font-size: 24px;
     margin: 0px;
     text-align:center;
     color: #F47D31;
    }
    h3 {
     font-size: 18px;
     margin: 0px;
     text-align:center;
     color: #F47D31;
    }
    h4 {
     color: #F47D31;
     background-color: #fff;
     -webkit-box-shadow: 2px 2px 20px #888;
     -webkit-transform: rotate(-45deg);
     -moz-box-shadow: 2px 2px 20px #888;
     -moz-transform: rotate(-45deg);
     position: absolute;
     padding: 0px 150px;
     top: 50px;
     left: -120px;
     text-align:center;
    }
    nav {
     display:block;
     width:25%;
     float:left;
    }
    nav a:link, nav a:visited {
     display: block;
     border-bottom: 3px solid #fff;
     padding: 10px;
     text-decoration: none;
     font-weight: bold;
     margin: 5px;
    }
    nav a:hover {
     color: white;
     background-color: #F47D31;
    }
    nav h3 {
     margin: 15px;
     color: white;
    }
    #container {
     background-color: #888;
    }
    section {
     display:block;
     width:50%;
     float:left;
    }
    article {
     background-color: #eee;
     display:block;
     margin: 10px;
     padding: 10px;
     -webkit-border-radius: 10px;
     -moz-border-radius: 10px;
     border-radius: 10px;
     -webkit-box-shadow: 2px 2px 20px #888;
     -webkit-transform: rotate(-10deg);
     -moz-box-shadow: 2px 2px 20px #888;
     -moz-transform: rotate(-10deg);
    }
    article header {
     -webkit-border-radius: 10px;
     -moz-border-radius: 10px;
     border-radius: 10px;
     padding: 5px;
    }
    article footer {
     -webkit-border-radius: 10px;
     -moz-border-radius: 10px;
     border-radius: 10px;
     padding: 5px;
    }
    article h1 {
     font-size: 18px;
    }
    aside {
     display:block;
     width:25%;
     float:left;
    }
    aside h3 {
     margin: 15px;
     color: white;
    }
    aside p {
     margin: 15px;
     color: white;
     font-weight: bold;
     font-style: italic;
    }
    footer {
     clear: both;
     display: block;
     background-color: #F47D31;
     color:#FFFFFF;
     text-align:center;
     padding: 15px;
    }
    footer h2 {
     font-size: 14px;
     color: white;
    }
    /* links */
    a {
     color: #F47D31;
    }
    a:hover {
     text-decoration: underline;
    }

    图 1-2 是代码清单 1-1 中的页面应用了 CSS(包括部分 CSS3)之后的显示效果。其实并不能把这个页面当成所谓的典型 HTML5 页面。因为计划赶不上变化,这个示例使用了很多新标签只是为了演示而已。
    1
    最后需要说明的是,看起来好像浏览器是因为识别了新的元素,所以显示出了对应的内容。其实不然,事实上这些元素很可能是先被重命名为了 foo 或者 bar,然后再应用样式,最后才显示出来的(当然,对于搜索引擎优化来说没有任何好处)。IE 是个特例,因为 IE 需要将这些元素都作为 DOM 的一部分,所以要想在 IE 中看到这些元素,必须用编程的方式把它们插入 DOM中,然后再以块元素(block element)的形式显示出来。

  • 相关阅读:
    MFC中的模态对话框与非模态对话框
    汇编学习:float与double速度问题
    汇编学习:二维数组遍历
    SSE练习:单精度浮点数组求和
    StretchDIBits速度测试(HALFTONE)
    StretchDIBits速度测试(COLORONCOLOR)
    多媒体定时器
    typedef与复杂声明
    Image Based Lighting In UE3
    One simple WPF & C# RayTracer
  • 原文地址:https://www.cnblogs.com/bjmumu/p/3924059.html
Copyright © 2011-2022 走看看