努力学习 HTML5 (3)—— 改造传统的 HTML 页面

要了解和熟悉 HTML5 中的新的语义元素,最好的方式就是拿一经典的 HTML 文档作例子,然后把 HTML5 的一些新鲜营养充实进入。如下就是我们要改造的页面,该页面很简单,只包含一篇文章。

ApocalypsePage_Original.html,这是一个格式非常规范的页面,所有的样式均来自于外部样式表。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="utf-8">
  <title>Apocalypse Now</title>
  <link rel="stylesheet" href="ApocalypsePage_Original.css">
</head>

<body>
<div class="Header">
  <h1>How the World Could End</h1>
  <p class="Teaser">Scenarios that spell the end of life as we know</p>
  <p class="Byline">by Ray N. Carnation</p>
</div><!-- end Header -->

<div class="Content">
  <p><span class="LeadIn">Right now</span>, you‘re probably feeling pretty good. After all, life in the developed world is comfortable<span class="style1">—</span>probably more comfortable than it‘s been for the average human being throughout all of recorded history.</p>
  <p>But don‘t get too smug. There‘s still plenty of horrific ways it could all fall apart. In this article, you‘ll learn about a few of our favorites.</p>

  <h2>Mayan Doomsday</h2>
  <p>Skeptics suggest that the Mayan calendar simply rolls to a new 5,126-year era after 2012, and doesn‘t actually predict a life-ending apocalypse. But given that the long-dead Mayans were wrong about virtually everything else, why should we trust them on this?</p>

  <h2>Robot Takeover</h2>
  <p>Not quite as frightening as a Vampire Takeover or Living-Dead Takeover, a robot rebellion is still a disquieting thought. We are already outnumbered by our technological gadgets, and even Bill Gates fears the day his Japanese robot slave turns him over by the ankles and asks (in a suitably robotic voice) "Who‘s your daddy now?"</p>

  <h2>Unexplained Singularity</h2>
  <p>We don‘t know how the universe started, so we can‘t be sure it won‘t just end, maybe today, and maybe with nothing more exciting than a puff of anti-matter and a slight fizzing noise.</p>

  <h2>Runaway Climate Change</h2>
  <p>Dismissed by some, Al Gore‘s prophecy of doom may still come true. If it does, we may have to contend with vicious storms, widespread food shortages, and surly air conditioning repairmen.</p>

  <h2>Global Epidemic</h2>
  <p>Some time in the future, a lethal virus could strike. Predictions differ about the source of the disease, but candidates include monkeys in the African jungle, bioterrorists, birds and pigs with the flu, warriors from the future, an alien race, hospitals that use too many antibiotics, vampires, the CIA, and unwashed brussel sprouts. Whatever the source, it‘s clearly bad news.</p>

</div><!-- end Content -->

<div class="Footer">
  <p class="Disclaimer">These apocalyptic predictions do not reflect the views of the author.</p>
  <p>
    <a href="AboutUs.html">About Us</a>
    <a href="Disclaimer.html">Disclaimer</a>
    <a href="ContactUs.html">Contact Us</a>
  </p>
  <p>Copyright ? 2014</p>
</div><!-- end Footer -->
</body>
</html>


在不增加任何 CSS 样式表之前,效果如下:

上面通过三个 <div> 将页面分成了三个部分,顶部的页眉,中部的内容和底部的页脚。

这个例子中的样式表很简单,整个页面最大宽度设置为 800 像素,避免文本在宽屏显示器上显示过长。页眉位于一个带有蓝色边框的盒子中,内容区的两侧都增加了内边距,而页脚在整个页面的底部居中。

ApocalypsePage_Original.css 样式文件内容如下:

@charset "utf-8";
/* CSS Document */
body{
    /*font-family 要使用安全字体,按照先特殊后一般的原则,
    先给出你想要的字体,然后是保险一些的字体,
    最后以 sans-serif 字体结尾*/
    font-family: "Lucida sans Unicode", "Lucida Grande", Geneva, sans-serif;
    max-width: 800px; /*最大宽度不超过 800 像素*/
}

/*页面顶部的标题区样式*/
.Header {
    background-color: #7695FE; /*可接受任何颜色值*/
    border: thin #336699 solid; /*多合一的 border 属性*/
    padding: 10px; /* 10像素的内边距,边框与内容之间的距离*/
    margin: 10px; /* 10像素的外边距,边框与周围元素之间的距离*/
    text-align: center; /*头部文本居中*/
}

/*页眉中标题<h1>样式*/
.Header h1{
    margin: 0px;
    color: white;
    font-size: xx-large; /*精确控制可以用像素或者em单位*/
}

/*页眉中子标题样式*/
.Header .Teaser{
    margin: 0px;
    font-weight: bold;
}

/*页眉中署名行样式*/
.Header .Byline{
    font-style: italic;
    font-size: small;
    margin: 0px;
}

.Content{
    font-size: medium;
    font-family: Cambria, Cochin, Georgia, "Times New Roman", Times, serif;
    /*左右内边距最大*/
    padding-top: 20px;
    padding-right: 50px;
    padding-bottom: 5px;
    padding-left: 50px;
    line-height: 120%; /*相邻两个文本行之间的距离*/
}

.Content .LeadIn{
    font-weight: bold;
    font-size: large;
    font-variant: small-caps;
}

.Content .h2{
    color: #24486C;
    margin-bottom: 2px;
    font-size: medium;
}

.Content p{
    margin-top: 0px;
}

.Footer{
    text-align: center;
    font-size: x-small;
}

.Footer .Disclaimer{
    font-style: italic;
}

.Footer p{
    margin: 3px;
}

这样我们的样式表就弯沉过了,现在去看看结果会怎样呢?如下图:


使用 HTML5 来构造页面

<div> 目前仍旧是 Web 设计的必备元素,它是一个直观、多用途的容器,可以通过它为页面中的任何区块应用样式。但 <div> 的问题在于,它本身不反映与页面相关的任何信息。

要通过 HTML5 改进这种情况,可以把 <div> 替换成更具有描述性语义的元素。

ApocalypsePage_Revised.html 中已经将 class 属性为 Header 和 Footer 两个 <div> 替换为 <header><footer>,部分代码如下:

<header>
  <h1>How the World Could End</h1>
  <p class="Teaser">Scenarios that spell the end of life as we know</p>
  <p class="Byline">by Ray N. Carnation</p>
</header>
...
<footer>
  <p class="Disclaimer">These apocalyptic predictions do not reflect the views of the author.</p>
  <p>
    <a href="AboutUs.html">About Us</a>
...
  </p>
  <p>Copyright ? 2014</p>
</footer>

当然,对应的 ApocalypsePage_Revised.css 文件也需要进行修改,将其中的 .Header.Footer 替换为 headerfooter。部分代码如下:

/*页面顶部的标题区样式*/
header {
    background-color: #7695FE; /*可接受任何颜色值*/
    border: thin #336699 solid; /*多合一的 border 属性*/
    padding: 10px; /* 10像素的内边距,边框与内容之间的距离*/
    margin: 10px; /* 10像素的外边距,边框与周围元素之间的距离*/
    text-align: center; /*头部文本居中*/
}

/*页眉中标题<h1>样式*/
header h1{
    margin: 0px;
    color: white;
    font-size: xx-large; /*精确控制可以用像素或者em单位*/
}

最后还有一个元素需要用在示例文件中,就是 <article> 元素,表示一个完整的、自成一体的内容。

<ariticle> 元素应该包含新闻报道或文章的内容,包括标题、署名和正文。因此添加了 <article> 元素后的结构如下:

<article>
  <header>
    <h1>How the World Could End</h1>
    <p class="Teaser">Scenarios that spell the end of life as we know</p>
    <p class="Byline">by Ray N. Carnation</p>
  </header>

  <div class="Content">
    <p><span class="LeadIn">Right now</span>, you‘re probably feeling pretty good. After all, life in the developed world is comfortable<span class="style1">—</span>probably more comfortable than it‘s been for the average human being throughout all of recorded history.</p>
...
  </div><!-- end Content -->
</article>

重新设计后,页面结构如下:


用 <figure> 添加插图

很多页面都是包含图片的。但是,插图 (figure) 与图片的概念还不完全一样。插图虽然独立于文本,但是文本中会提到它。

一般来说插图应该是浮动的,还会有浮动图题。下面是在文章中添加插图的 HTML 标记,在正文的第一段和第二段之间的位置,部分代码如下:

...
<div class="Content">
  <p><span class="LeadIn">Right now</span>, you‘re ...</p>

  <div class="FloatFigure">
    <img src="human_skull.jpg" alt="Human skull">
    <p>Will you be the last person standing if one of these apocalyptic
   scenarios plays out?</p>
  </div>

  <p>But don‘t get too smug. There‘s...</p>
...

相应的 样式表规则如下:

.FloatFigure{
    float: left;
    margin: 0px 20px 0px 0px;
}

.FloatFigure p{
    max-width: 300px;
    font-size: small;
    font-style: italic;
    margin-bottom: 5px;
}

下图展示了这个示例的外观,插图恰好在第一段文本之后,浮动在后面文本的左侧,图题的文本的宽度我们限制住了,让图题显示很充实、很优雅。

HTML5 中提供了一个 <figure> 元素,图题可以放在 <figure> 中的 <figcaption> 元素里,经过改造,代码如下:

<figure class="FloatFigure">
  <img src="human_skull.jpg" alt="Human skull">
  <figcaption>Will you be the last person standing if one of these apocalyptic
   scenarios plays out?</figcaption>
</figure>

当然样式表中的选择符,相应修改一下即可。

.FloatFigure{
    float: left;
    margin: 0px 20px 0px 0px;
}

.FloatFigure figcaption{
    max-width: 300px;
    font-size: small;
    font-style: italic;
    margin-bottom: 5px;
}

最后还有就是 <img> 元素中的 alt 属性可以删除掉,因为图题中包含了图片的完整说明。


用 <aside> 添加附注

新的 <aside> 元素表示与它周围的文本没有密切关系的内容。可以通过它介绍另一个相关的话题,或者对主文档中提出的某个观点进行解释。还可以用来放置广告、相关内容链接。

下面的示例中将用作醒目引文(pull quote),使用 <div> 元素可以创造这种效果,但是用 <aside> 元素让标记更有意义:

部分代码如下:

  <p>... (in a suitably robotic voice) "Who‘s your daddy now?"</p>

  <aside class="PullQuote">
    <img src="quotes_start.png" alt="Quote">
    We don‘t know how the universe started, so we can‘t be sure it won‘t just end, maybe today.
    <img src="quotes_end.png" alt="End quote">
  </aside>

  <h2>Unexplained Singularity</h2>

对应的样式表内容如下:

.PullQuote{
    float: right;
    max-width: 300px;
    border-top: thin black solid;
    border-bottom: thick black solid;
    font-size: 30px;
    line-height: 130%;
    font-style: italic;
    padding-top: 5px;
    padding-bottom: 5px;
    margin-left: 15px;
    margin-bottom: 10px;
}

.PullQuote img{
    vertical-align: bottom;
}

示例代码

ApocalypsePage.rar

时间: 2024-11-16 11:45:41

努力学习 HTML5 (3)—— 改造传统的 HTML 页面的相关文章

努力学习 HTML5 (1)&mdash;&mdash; 初体验

HTML5 代表未来:W3C ( World Wide Web Consortium, 万维网联盟) 已经放弃 XHTML,从而使 HTML5 成为正式标准并得到认可. 最简单的 HTML5 文档 <!doctype html> <title>A Tiny HTML Document</title> <p>Let's rock the browser, HTML5 style.</p> 只包含一行文本的超简单的 HTML5 文档,它在浏览器中效果

努力学习 HTML5 (4)&mdash;&mdash; 浏览器对语义元素的支持情况

经过上一节学习,我们已经建立一个结构良好的页面,如果在旧版的 IE 浏览器中浏览可能这些语义元素无法显示. 毕竟这些语义元素什么也不做,要支持它们,只要让浏览器把它们当做普通的 <div> 元素就行了.为此我们要做的就是为它们添加点样式规则.之后就可以得到超级可靠的语义元素了,即使使用10年前的浏览器也可以正常浏览. 为语义元素添加样式 浏览器遇到不认识的元素时,会把它们当做内联(inline)元素.大多数 HTML5 语义元素都是块级元素. 因此我们添加一条超级规则,为9个 HTML5 元素

努力学习 HTML5 (1)&mdash;&mdash; 元素的增和删

HTML5 放松了某些规则,HTML5 的制定者想让这门语言更紧密地反映浏览器的现实. 放松的规则 不要求包含 <html>.<head> 和 <body> 元素. 不区分大小写. 允许省略关闭空元素,例如 <img>.<br> 或者 <hr>. 属性值可以不加引号,只有属性名没有属性值也可以. 如果能做到以下几点,就算是良好的 HTML5 风格了. 包含可选的<html>.<head> 和 <body&

提要求,学习html5,完善自己的个人网站,体会不一样的现实心情

2016年6月5日,我睡不着,在这里,思考,思考自己的人生,也总结自己在这两年来的所有的成就,转眼22岁了,从自己当时选择从学校出来,到现在.我的整个人生啊,发生了翻天覆地的变化. 从学校当时的初心,到2016年5月29日,被现实磨到与女朋友分手,而分手的最后,什么也没有留下,就留下了一些自己的不成熟,眼看着所有的一切,都全完了.一切什么都没有了,当时自己的计划, 定了的时候,自己许下诺言的时候,自己打算开始认真追求,认真去开始自己的长跑路线的时候,而现时给自己留下的,只有自己内心的崩溃.唯独美

HTML5开发学习教程,学习HTML5还是学习HTML5的制作工具?

一名优秀的HTML5前端开发工程师在知识体系上既要有广度,又要有深度,所以很多大公司往往出高薪也很难招到理想的前端开发工程师.现在说的重点不在于讲解技术,而是更侧重于对技巧的讲解.技术非黑即白,只有对和错,而技巧则见仁见智. 以前会Photoshop和Dreamweaver就可以制作网页,现在只掌握这些已经远远不够了.无论是开发难度上,还是开发方式上,现在的网页制作都更接近传统的网站后台开发,所以现在不再叫网页制作,而是叫WEB前端开发. HTML5前端开发在产品开发环节中的作用变得越来越重要,

蓝鸥零基础学习HTML5—html+css基础

蓝鸥零基础学习HTML5-html+css基础 一.课程目标 1.了解前端开发职位:2.掌握常用标签以及语义及用法:3.掌握常用css的特性,掌握基础布局技巧:4.掌握整站规划概念. 二.适用人群 零基础积极学习html5者 三.课程简介 本课程主要讲解了 html+css的基础知识,包括html模板.标签.css基础样式.布局.表格表单.整站等等,是进行前端开发的基础.Html+css是前端开发的基础,大部分前端开发工程都需要从html+css布局开始,html+css的基础非常重要,是前端开

学习HTML5之类的前端技术的好方法!

今天学习HTML5,把网上的部分知识点复制到记事本里时,忽然醒悟,干嘛不把记事本改成HTML呢,还能随手进行新知识新操作的实践! 虽然比起针对知识点去实践有点麻烦,但是这样学习的时候,复习到了很多几乎快要忘记的东西,比如&.<.>.空格的转义字符,一下子熟练了很多2333 而且还有个好处,能练习各种文章格式的排版,对于有点强迫症似的我来说,直接复制粘贴一大段话到一个p标签里,我是绝对无法容忍的!哈哈!

大熊君学习html5系列之------Online &amp;&amp; Offline(在线状态检测)

一,开篇分析 Hi,大家好,给大家拜个晚年!大熊君又和大家见面了,(*^__^*) 嘻嘻……,这系列文章主要是学习Html5相关的知识点,以学习API知识点为入口,由浅入深的引入实例,让大家一步一步的体会"h5"能够做什么,以及在实际项目中如何去合理的运用达到使用自如,完美驾驭O(∩_∩)O~,好了,废话不多说,直接进入今天的主题, online,offline 事件用来监测浏览器处于在线或离线状态.HTML5提出的离线存储,web应用程序可以在不连接互联网的情况下满足用户的部分需求,

低层次“努力学习”和学习的本质

?什么是"低层次努力"? ?你把握住学习的本质了吗? ?你享受学习过程吗? 声明:本文部分引自 你这么努力,为何还如此焦虑? 1.什么是"低层次努力"? 低层次的努力,其实就是看起来很努力,一般是本身对某个事物没什么想法(方法),但又急于达到目标,所做的一系列费力不讨好.自欺欺人的无用功,是一种假性学习. 那什么是真正的努力呢?引用知乎回答 ------------------------------------------------------引用开始-----