网页设计与制作
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.3 HTML5中的页面元素及属性

3.3.1 分组元素

1.figure元素和figcaption元素

HTML5使用figure和figcaption元素插入图片和图注。figure元素用于插入某张图片并添加描述。在HTML5以前,需要插入图片时,只有额外使用div之类的元素才能将文本添加到页面中。这样做的缺点在于图片和图注并无任何关联。而现在添加figure之后,可以再利用figcaption为图片添加图注。

例题3-6:使用figure和figcaption元素插入图片和图注,代码如下:

      <! DOCTYPE HTML>
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>使用figure和figcaption元素插入图片和图注</title>
      </head>
      <body>
      <figure>
          <img src="3-6.png" alt=""/>
          <figcaption>
            这里是图片的图注内容
          </figcaption>
      </figure>
      </body>
      </html>

在浏览器中预览的效果如图3-6所示。

图3-6 使用figure和figcaption元素插入图片和图注的效果

虽然figure通常用来插入图片,但它也可以是一段代码、图片、音乐或者视频。通常情况下,figure主要用于图片。

figure元素中不仅仅包含一张图片,可以使用figure元素来显示多张图片。

例题3-7:figure元素的使用。

      <! DOCTYPE HTML>
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>使用figure元素来显示多张图片</title>
      </head>
      <body>
      <figure>
          <img src="3-6.png" alt=""/>
          <img src="3-6.png" alt=""/>
          <img src="3-6.png" alt=""/>
          <figcaption>
            这一组图片的描述
          </figcaption>
      </figure>
      </body>
      </html>

在浏览器中预览的效果如图3-7所示。

图3-7 使用figure元素来显示多张图片效果

显示图片内容的时候是否总是使用figcaption元素?如果单纯是为了显示某张图片,那么使用普通的<img>标记足矣。不过,如果它包括额外的有助于内容描述的信息,那么就应该使用<figure>和<figcaption>。

提示:<figure>中只能包含一个<figcaption>。

2.hgroup元素

<hgroup>标签用于对网页或区段(section)的标题进行组合。这个元素用来对多个相关联的h1~h6标题进行分组。如果你的网站有副标题,可以使用hgroup元素。虽然hgroup是一个有效的分组选项,但是它主要是用来告知文档大纲哪个标题是最重要的。文档大纲只会包括最顶层的标题。

下面可以通过实例学习<hgroup>标签的用法。

例题3-8:<hgroup>元素的使用,代码如下:

      <! DOCTYPE HTML>
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>hgroup标签的用法</title>
      </head>
      <body>
      <hgroup>
      <h1>标题1</h1>
      <h2>标题2</h2>
      </hgroup>
      <p>这里是内容</p>
      </body>
      </html>

在浏览器中预览的效果如图3-8所示。

图3-8 hgroup标签的用法效果

3.3.2 页面交互元素

1.details元素和summary元素

<details>是一个全新的HTML5元素,功能是描述文档某个部分的细节。<details>标记常与<summary>标记配合使用。在默认情况下,不显示<details>中的内容。当与<summary>标记配合使用时,在单击<summary>标记后才会显示<datails>元素中设置的内容。<details>元素的常用属性如下所示:

3-6 DETAILS元素

① open:值为open,功能是定义details是否可见。

② subject:值为sub_id,功能是设置元素所对应项目的ID号。

③ draggable:值为true或false,功能是设置是否为可拖动元素,默认值是false。

<details>标记的本质是允许我们在单击标签时显示和隐藏内容。

<summary>标签包含了<details>元素的标题。在两者结合起来使用的代码中,<summary>元素是<details>元素的第一个子元素,二者经常同时出现在页面中。

例题3-9:<details>元素和<summary>元素的使用。

      <! DOCTYPE HTML>
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>details标记与summary标记的使用</title>
      </head>
      <body>
      <hgroup>
      <details open="open">
        <summary>页面说明</summary>
        今天是2017年12月18号
      </details>
      </body>
      </html>

在浏览器中预览的效果如图3-9所示。

图3-9 details标记与summary标记的使用效果

当读者单击小三角形之后,文字会隐藏。

提示:目前只有Chrome和Safari浏览器支持<details>标签,所以这一效果现在还是用JS实现。

2.progress元素

<progress>标签定义运行中的进度(进程)。可以使用<progress>标签来显示JavaScript中耗费时间的函数的进度。其具体语法格式如下:

3-7 PROGRESS元素

      <progress max="值" value="值"></progress>

其中属性max定义完成的值,属性value定义进程的当前值。

例题3-10:<progress>元素的使用。

      <! DOCTYPE HTML>
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>progress标签的使用</title>
      </head>
      <body>
      <hgroup>
      对象的下载进度:
      <progress max="100" value="85"></progress>
      </body>
      </html>

在浏览器中预览的效果如图3-10所示。

图3-10 <progress>标签的使用效果

3.3.3 文本层次语义元素

1.time元素

<time>标签定义公历的时间(24小时制)或日期,时间和时区偏移是可选的。该元素能够以机器可读的方式对日期和时间进行编码,这样,举例说,用户代理能够把生日提醒或排定的事件添加到用户日程表中,搜索引擎也能够生成更智能的搜索结果。

3-8 TIME元素

例题3-11:<time>元素的使用方法。代码如下:

      <! DOCTYPE HTML>
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>time元素的使用</title>
      </head>
      <body>
      <hgroup>
      <p>我们在每天早上 <time>9:00</time> 开始营业。</p>
      <p>我在 <time datetime="2017-12-19">明天</time> 有个约会。</p>
      </body>
      </html>

在浏览器中预览的效果如图3-11所示。

图3-11 time元素的使用效果

在这里,读者看到了一个事实,那就是<time>标签的效果没有出来,这是为什么呢?答案就是:目前所有主流浏览器都不支持<time>标签。

3-9 MARK元素

2.mark元素

<mark>标签定义带有记号的文本。在需要突出显示文本时使用<mark>标签。我们通过实例学习<mark>标签的使用方法。

例题3-12:利用<mark>标签,突出显示部分文本,代码如下:

      <! DOCTYPE HTML>
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>突出显示部分文本</title>
      </head>
      <body>
      <hgroup>
      <p>不要忘记给我买 <mark>糖</mark> 爸爸.</p>
      </body>
      </html>

在浏览器中预览的效果如图3-12所示。

图3-12 突出显示部分文本的效果

上面这个很童趣的提示效果,是不是能够让我们加深对mark标签的印象呢?

3.cite元素

<cite>标签通常表示它所包含的文本对某个参考文献的引用,比如书籍或者杂志的标题。其具体语法形式如下:

      <cite>内容</cite>

按照惯例,引用的文本将以斜体显示。用<cite>标签把指向其他文档的引用分离出来,尤其是分离那些传统媒体中的文档,如书籍、杂志、期刊等。

例题3-13:使用<cite>标签来定义作品的标题,代码如下:

      <! DOCTYPE HTML>
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>使用cite标签来定义作品的标题</title>
      </head>
      <body>
      <hgroup>
      <p>我是作品的<cite>标题</cite></p>
      </body>
      </html>

在浏览器中预览的效果如图3-13所示。

图3-13 使用<cite>标签来定义作品的标题效果

3.3.4 全局元素

在HTML5中新增了一个概念——全局属性。全局变量是指对任何元素都可以使用的属性。这里介绍如下几个全局属性。

1.draggable属性

3-10 DRAGGABLE属性

draggable属性规定元素是否可拖动。其语法规则如下:

      <element draggable="true|false|auto">

其中属性值true规定元素是可拖动的,false规定元素是不可拖动的,auto使用浏览器的默认特性。

例题3-14:定义一个可拖动的段落,代码如下所示:

      <! DOCTYPE HTML>
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>定义了一个可拖动的段落</title>
      </head>
      <body>
      <hgroup>
      <p draggable="true">我是一个可拖动的段落</p>
      </body>
      </html>

在浏览器中预览的效果如图3-14所示。

图3-14 可拖动的段落显示效果

提示:实际上,如果你想体会draggable属性的使用效果,目前需要使用Firefox、Chrome及Safari浏览器。

2.hidden属性

hidden属性规定对元素进行隐藏。隐藏的元素不会被显示。其具体语法格式如下:

      <element hidden="hidden">

如果使用该属性,则会隐藏元素。例如,若想隐藏一个段落,可以进行如下操作:

      <p hidden="hidden">这是一个段落。</p>

可以对段落标签p添加hidden属性进行设置,使用户在满足某些条件时才能看到这个段落。然后,可使用JavaScript来删除hidden属性,使该元素变得可见。

3-11 SPELLCHECK属性

3.spellcheck属性

spellcheck属性规定是否对元素内容进行拼写检查。其具体语法格式如下:

      <element spellcheck="value">

其中,value仅有true和false两种值可供选择,该属性值决定应当对元素的文本是否进行拼写检查。下面通过实例来进一步学习spellcheck属性的用法。

例题3-15:利用spellcheck属性进行拼写检查。代码如下:

      <! DOCTYPE HTML>
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>带有编写检查的可编辑段落</title>
      </head>
      <body>
      <hgroup>
      <p contenteditable="true" spellcheck="true">这是可编辑的段落。请试着编辑文本。</p>
      </body>
      </html>

在浏览器中预览的效果如图3-15所示。

图3-15 带有拼写检查的可编辑段落效果

spellcheck属性还可以对以下文本进行拼写检查:

① 类型为text的input元素中的值(非密码);

② textarea元素中的值;

③ 可编辑元素中的值。

4.contenteditable属性

在例3-15中看到了contenteditable属性的应用,它代表什么意思呢?contenteditable属性规定是否可编辑元素的内容。例如,在例3-15中就定义了一个可以编辑的段落。其语法规则如下:

      <element contenteditable="value">

其中,contenteditable的值可以是true、false或者classname:

① true:规定可以编辑元素内容;

② false:规定无法编辑元素内容;

③ classname:继承父元素的contenteditable属性。