HTML -- 文本内容

112 阅读8分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情

HTML提供了文本内容元素来组织在<body>里的块或章节的内容。这一部分的元素包括我们最常用的<div><p>和各种列表等等。这一章节我们就来学习他们。

内容划分元素 -- <div>

<div>应该是我们最常见最常用的一个元素了。它是一个通用型的流内容容器,定义HTML文档中的一个分隔区块或者一个区域部分,对其内容进行分组以应用样式。

<div>是一个“纯粹的”容器,不具有语义。应当仅在没有其它合适的语义元素(如<section>等)可用时使用。

段落元素 -- <p>

<p>元素定义一个段落。通常在视觉媒体中表示为通过空行和/或首行缩进与相邻块分隔的文本块,也可以是包含相关内容的任何结构的分组(比如图像和表单)。

<p>标签中,如果包含了其他块级元素(包括<p>),那么<p>标签会提前闭合:

<p>1
  <div>2</div>
</p>
  
<!-- 渲染结果如下 -->
<p>1 </p>
<div>2</div>
<p></p>

可访问性

在使用多个<p>元素时,想要增加段落之间的空间,不要在其中使用空的<p>元素,这对于使用屏幕阅读技术的人来说,屏幕阅读器会宣布段落的存在,但是因为该段落没有内容,屏幕阅读器不会宣布其中的任何内容,会让人感到困惑。

预格式化文本元素 -- <pre>

<pre>元素表示预定义格式化的文本。在<pre>标签元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。简单地说就是文本中不管有多少空格和换行符,都会原样显示(大部分元素会将内容中的多个空格和换行符压缩为一个)。

注意事项

  • <pre>是一个块级元素,但是在使用时尽量不要包含块级元素(包括<pre>),另外,如果有需要使用特殊符号,尤其是定义一个HTML源代码(如 【<】、【>】等)的时候,请使用符号实体来代替特殊字符:

    <pre>这是一个<pre>pre</pre>标签</pre>
    <!-- 结果如下 -->
    <pre>
      "这是一个"
      <pre>pre</pre>
      "标签"
    </pre>
      
    <pre>这是一个&lt;pre&gt;pre&lt;/pre&gt;标签</pre>
    <!-- 结果如下 -->
    <pre>这是一个<pre>pre</pre>标签</pre>
    
  • 不推荐在<pre>元素中使用制表符 tab ,因为在不同的浏览器中,tab 的表现形式各不相同。在用<pre>标签格式化的文档段中使用空格,可以确保文本正确的水平位置。

可访问性问题

弱视力人群在使用屏幕阅读器进行浏览时,屏幕阅读器按顺序读出<pre>的文本字符可能会令人感到困惑。在使用预格式化文本创建的任何图像或图表提供备用描述非常重要。这里可以参考MDN提供的示例

主题中断(水平线)元素 -- <hr>

<hr>元素表示段落级别的主题中断。默认显示为一条通屏的水平线。

早期的HTML版本中,<hr>没什么语义,就只是表示一条水平线。当然现在<hr>也是呈现出一条水平线,但目前被定义为语义上的,而不是表现层面上。因此在使用时要注意使用场景。如果只是需要一条水平线,可以用CSS样式来修饰(比如:给元素的某个边加边框,伪元素等)。

目前<hr>除了全局属性外,其他属性已经被弃用了,虽然能用,但不推荐,想对<hr>添加好看的样式,请通过CSS绘制。

使用示例

注意:在HTML中<hr>没有结束标记,如果有结束标记,浏览器会自动修正。但是在XHTML中,必须要有结束标记。

可附标题内容元素 -- <figure>与图形标题元素 -- <figcaption>

<figure>元素代表一段自包含内容。通常用于注释图像、图表、照片、代码等等。在<figure>当中可以使用<figcaption>元素指定标题。

<figcaption>元素表示其父元素<figure>的其它内容的标题。通常它是其父<figure>的第一个或最后一个元素。

<figure>元素的内容应该与文档主内容相关,同时元素的位置相对于主内容是独立的。即使被删除或者移动,也不会对文档流产生影响。<figcaption>元素是可选的,如果没有该元素,这个父节点的内容只是会没有说明/标题。

通过在其中插入<figcaption>(作为第一个或最后一个子元素)来与<figure>元素相关联。

使用示例:

块级引用元素 -- <blockquote>

<blockquote>元素表示从另一个源引用的部分。通常在渲染时,这部分的内容左右两侧会有一定的缩进(如需要覆盖原本的缩进请使用CSS的 margin-left/right)。

<blockquote>是块级引用元素,是一个单独的引用块,如果需要内联一个较短的引用块,请使用<q>

<blockquote>身上,有一个cite属性,在HTML中,有一个<cite>元素,通常在<blockquote>身上使用cite属性提供引用来源的URL(必须从另一个源引用),使用<cite>元素提供来源的文本表示,以文本的形式告知读者引文的出处(cite属性在普通的Web浏览器中没有视觉效果,主要是通过屏幕阅读器使用)。

列表项元素 -- <li>

<li>元素用于表示列表中的项。必须包含在无序列表(<ul>)、有序列表(<ol>)或者菜单(<menu>)当中。

<li>在不同的列表或菜单当中,显示的效果不一样,在菜单和无序列表中,列表项通常使用项目符号(•)显示。在有序列表中,它们通常以升序计数器显示在左侧,例如数字或字母。可以使用CSS中的list-style-type属性指定显示符号的类型(li身上的type属性已被弃用,不推荐使用)。

无序列表元素 -- <ul>

<ul>表示一个无序列表,其中的项(<li>)通常显示为项。并且项与项之间的顺序无意义

<ul><ol>都可不受限制的进行自身嵌套或者交互嵌套(比如在一个<ul>当中可以嵌套一个或多个<ul><ol><ol>亦是如此)。

<ul>身上有一个compact属性,当它的值为true时,将呈现紧凑型列表,但是该属性已被弃用,如果需要呈现出与compact相同的效果,可以使用CSS,将line-height的值设置为80%

有序列表元素 -- <ol>

<ol>表示一个有序列表。其中的项的显示效果通常为升序数字列表,且项与项之间的顺序是有意义的(例如做菜的步骤等)。

<li>元素身上有一个value属性,用于指定当前的<li>在有序列表中的序号。该属性只能是数字(可为负),在此之后的<li>会根据该<li>value值开始计数。value属性只在有序列表当中使用才有效,在无序列表和菜单当中使用是无意义且无效的。

属性

属性名简介
reversedboolean指定列表的项按相反顺序排列。项目将从高到低编号。
startnumber指定列表项开始计数的整数
type1(默认)、a、A、i、I指定显示符号的类型
  • start属性始终是一个阿拉伯数字,无论type的值是字母或是罗马数字。
  • 除非列表项的序号或显示符号的类型很重要,否则请使用CSS中的list-style-type代替type

菜单元素 -- <menu>

<menu>元素表示一组用户可执行或激活的命令。在HTML规范中<menu>被描述为<ul>的语义替代项,但被浏览器视为与<ul>没什么不同,在其中的项依然使用<li>

在一些浏览器中,还可以使用<menuitem>元素作为<menu>的项,表示生成一个弹出式菜单。但是该元素在HTML5.2版本中已被弃用,不再推荐使用。目前在中文版的MDN中,<menu>页给出的示例依然是使用了<menuitem>详细请参考)。

<menu><ul>元素都表示项的无序列表。主要区别在于<ul>主要包含用于显示的项目,而<menu>用于交互,通常用于文本菜单,工具条和命令列表选项。。

使用示例

<menu>
  <li>
    <button>复制</button>
  </li>
  <li>
    <button>剪切</button>
  </li>
  <li>
    <button>粘贴</button>
  </li>
</menu>

描述列表元素 -- <dl>、描述术语元素 -- <dt>和说明详细信息元素 -- <dd>

<dl>元素表示一个说明列表

<dt>元素指定描述或定义列表中的术语,必须在<dl>元素当中使用,通常其后跟着<dd>元素。多个连续出现的<dt>元素都将由出现在它们后面的第一个<dd>元素定义。

<dd>表示一个描述元素。它的作用是在<dl>中描述、定义或者说明就跟着自己的前一个<dt>元素。<dd>只能作为<dl>的子元素出现,并且在其前面必须跟着一个<dt>元素。

注意:在页面上创建缩进时,请使用CSS的margin属性,不要使用<dl><ul>,这不是<dl>该做的事。

使用示例

<dl>
  <dt>橘子</dt>
  <dd>学名:Musa nana Lour。是芭蕉科、芭蕉属植物。</dd>

  <dt>苹果</dt>
  <dd>蔷薇科苹果属植物。</dd>

  <dt>葡萄</dt>
  <dd>学名:Vitis vinifera L。为葡萄科葡萄属木质藤本植物。</dd>
</dl>

参考资料