<hr>

<hr>用来在一篇文章中分隔两个不同的主题,浏览器会将其渲染为一根水平线。该标签是单独使用的,没有闭合标签。

  1. <p>第一个主题</p>
  2. <hr>
  3. <p>第二个主题</p>

上面代码的渲染结果是,两段之间会出现一根水平线。

该标签是历史遗留下来的,建议尽量避免使用。主题之间的分隔可以使用<section>,如果想要水平线的效果,可以使用 CSS。

<pre>

<pre>是一个块级元素,表示保留原来的格式(preformatted),即浏览器会保留该标签内部原始的换行和空格。浏览器默认以等宽字体显示标签内容。

  1. <pre>hello
  2. world</pre>

上面代码中,换行和连续空格都会由于<pre>标签,而被保留下来,浏览器按照原样输出。

注意,HTML 标签在<pre>里面还是起作用的。<pre>只保留空格和换行,不会保留 HTML 标签。

  1. <pre><strong>hello world</strong></pre>

上面代码中,<pre>标签的内容会加粗显示。

<strong><b>

<strong>是一个行内元素,表示它包含的内容具有很强的重要性,需要引起注意。浏览器会以粗体显示内容。

  1. <p>开会时间是<strong>下午两点</strong></p>

<b><strong>很相似,也表示它包含的内容需要引起注意,浏览器会加粗显示。它是 Boldface 的缩写。

  1. <p>开会时间是<b>下午两点</b></p>

它与<strong>的区别在于,由于历史原因,它没有语义,是一个纯样式的标签,违反了语义与样式分离的原则,因此不建议使用,应该优先使用<strong>标签。

<em><i>

<em>是一个行内标签,表示强调(emphasize),浏览器会以斜体显示它包含的内容。

  1. <p>我们<em>已经</em>讨论过这件事情了。</p>

虽然浏览器通常会以斜体显示<em>,但无法保证一定如此,所以最好还是用 CSS 指定一下这个标签的样式。

<i>标签与<em>相似,也表示与其他地方有所区别,浏览器会以斜体显示。它是 Italic 的缩写。

  1. <p>我心想,这件事是<i>真的</i>吗?</p>

<i>标签的语义不强,更接近是一个纯样式的标签,建议优先使用<em>标签代替它。

<sub><sup><var>

<sub>标签将内容变为下标,<sup>标签将内容变为上标。它们都是行内元素,主要用于数学公式、分子式等。

  1. <p>水分子是 H<sub>2</sub>O。</p>

<var>标签表示代码或数学公式的变量。

  1. <p>勾股定理是
  2. <var>a</var><sup>2</sup> + <var>b</var><sup>2</sup> = <var>c</var><sup>2</sup>
  3. </p>

<u><s>

<u>标签是一个行内元素,表示对内容提供某种注释,提醒用户这里可能有问题,基本上只用来表示拼写错误。浏览器默认以下划线渲染内容。

  1. <p>
  2. 一个容易写错的成语是把<em>安分守己</em>写成<u>安份守己</u>
  3. </p>

上面代码中,<u>提示用户这是一个拼写错误,“安份守己”的下方会有一个下划线。

注意,<u>会产生下划线,由于链接也默认带有下划线,所以必须非常小心使用<u>标签,避免用户误以为可以点击。万一确有必要使用,最好使用 CSS 改变<u>的默认样式。

<s>标签是一个行内元素,为内容加上删除线。

  1. <p>今天特价商品:<s>三文鱼</s>(售完)</p>

上面代码中,“三文鱼”会有一根删除线。

<blockquote><cite><q>

<blockquote>是一个块级标签,表示引用他人的话。浏览器会在样式上,与正常文本区别显示。

  1. <blockquote cite="https://quote.example.com">
  2. <p>天才就是 1% 的天赋和99%的汗水。</p>
  3. </blockquote>

<blockquote>标签有一个cite属性,它的值是一个网址,表示引言来源,不会显示在网页上。

<cite>标签表示引言出处或者作者,浏览器默认使用斜体显示这部分内容。

  1. <blockquote cite="https://quote.example.com">
  2. <p>天才就是 1% 的天赋和99%的汗水。</p>
  3. </blockquote>
  4. <cite>-- 爱迪生</cite>

<cite>不一定跟<blockquote>一起使用。如果文章中提到资料来源,也可以单独使用。

  1. <p>更多资料请看<cite>维基百科</cite></p>

<q>是一个行内标签,也表示引用。它与<blockquote>的区别,就是它不会产生换行。

  1. <p>
  2. 莎士比亚的《哈姆雷特》有一句著名的台词:
  3. <q cite="https://quote.example.com">活着还是死亡,这是一个问题。</q>
  4. </p>

<blockquote>一样,<q>也有cite属性,表示引言的来源网址。

注意,浏览器默认会斜体显示<q>的内容,并且会自动添加半角的双引号。所以,引用中文内容时要小心。

<code>

<code>标签是一个行内元素,表示标签内容是计算机代码,浏览器默认会以等宽字体显示。

  1. <code>alert()</code>的作用是让网页弹出一个提示框。

如果要表示多行代码,<code>标签必须放在<pre>内部。<code>本身仅表示一行代码。

  1. <pre>
  2. <code>
  3. let a = 1;
  4. console.log(a);
  5. </code>
  6. </pre>

<kbd><samp>

<kbd>标签是一个行内元素,原意是用户从键盘输入的内容,现在扩展到各种输入,包括语音输入。浏览器默认以等宽字体显示标签内容。

  1. <p>Windows 可以按下 <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Del</kbd> 重启。</p>

<kbd>可以嵌套,方便指定样式。

  1. <p>Windows 可以按下
  2. <kbd> <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Del</kbd> </kbd>
  3. 重启。</p>

<samp>标签是一个行内元素,表示计算机程序输出内容的一个例子。浏览器默认以等宽字体显示。

  1. <p>如果使用没有定义的变量,浏览器会报错:
  2. <samp>Uncaught ReferenceError: foo is not defined</samp>
  3. </p>

<mark>

<mark>是一个行内标签,表示突出显示的内容。Chrome 浏览器默认会以亮黄色背景,显示该标签的内容。

  1. <p>我们讨论以后决定,<mark>运行会在下周三举办</mark></p>

<mark>很适合在引用的内容(<q><blockquote>)中,标记出需要关注的句子。

  1. <blockquote>
  2. 床前明月光,疑是地上霜。<mark>举头望明月,低头思故乡。</mark>
  3. </blockquote>

除了标记感兴趣的文本,<mark>还可以用于在搜索结果中,标记出匹配的关键词。

注意,不要只为了高亮的效果,而使用这个标签,因为不能保证浏览器的处理方式。如果要保证高亮,还是要使用 CSS 样式。

<small>

<small>是一个行内标签,浏览器会将它包含的内容,以小一号的字号显示,不需要使用 CSS 样式。它通常用于文章附带的版权信息或法律信息。

  1. <p>文章正文</p>
  2. <p><small>以上内容使用创意共享许可证。</small></p>

<time><data>

<time>是一个行内标签,为跟时间相关的内容提供机器可读的格式。

  1. <p>运动会预定<time datetime="2015-06-10">下周三</time>举行。</p>

上面代码中,<time>表示下周三的具体日期。这方便搜索引擎抓取,或者下一步的其他处理。

<time>datetime属性,用来指定机器可读的日期,可以有多种格式。

  • 有效年份:2011
  • 有效月份:2011-11
  • 有效日期:2011-11-18
  • 无年份的日期:11-18
  • 年度的第几周:2011-W47
  • 有效时间:14:5414:54:3914:54:39.929
  • 日期和时间:2011-11-18T14:54:39.929
  1. <p>音乐会在<time datetime="20:00">晚上八点</time>开始。</p>

<data>标签与<time>类似,也是提供机器可读的内容,但是用于非时间的场合。

  1. <p>本次马拉松比赛第一名是<data value="39">张三</data></p>

上面代码中,选手的机读数据就放在<data>标签的value属性。

<address>

<address>标签是一个块级元素,表示某人或某个组织的联系方式。

  1. <p>作者的联系方式:</p>
  2. <address>
  3. <p><a href="mailto:foo@example.com">foo@example.com</a></p>
  4. <p><a href="tel:+555-34762301">+555-34762301</a></p>
  5. </address>

该标签有几个注意点。

(1)如果是文章里提到的地址(比如提到搬家前的地址),而不是联系信息,不要使用<address>标签。

(2)<address>的内容不得有非联系信息,比如发布日期。

(3)<address>不能嵌套,并且内部不能有标题标签(<h1>~<h6>),也不能有<article><aside><section><nav><header><footer>等标签。

(4)通常,<address>会放在<footer>里面,下面是一个例子。

  1. <footer>
  2. <address>
  3. 文章的相关问题请联系<a href='mailto:zhangsan@example.com'>张三
  4. McClure</a>
  5. </address>
  6. </footer>

<abbr>

<abbr>标签是一个行内元素,表示标签内容是一个缩写。它的title属性给出缩写的完整形式,或者缩写的描述。鼠标悬停在该元素上方时,title属性值作为提示,会完整显示出来。

  1. <abbr title="HyperText Markup Language">HTML</abbr>

注意,某些浏览器可能对该标签提供圆点下划线。

<ins><del>

<ins>标签是一个行内元素,表示原始文档添加(insert)的内容。<del>与之类似,表示删除(delete)的内容。它们通常用于展示文档的删改。

  1. <del><p>会议定于5月8日举行。</p></del>
  2. <ins><p>会议定于5月9日举行。</p></ins>

浏览器默认为<del>标签的内容加上删除线,为<ins>标签的内容加上下划线。

这两个标签都有以下属性。

  • cite:该属性的值是一个 URL,表示该网址可以解释本次删改。
  • datetime:表示删改发生的时间。
  1. <ins cite="./why.html" datetime="2018-05">
  2. <p>项目比原定时间提前两周结束。</p>
  3. </ins>

<dfn>

<dfn>是一个行内元素,表示标签内容是一个术语(definition),本段或本句包含它的定义。

  1. <p>
  2. 通过 TCP/IP 协议连接的全球性计算机网络,叫做 <dfn>Internet</dfn>
  3. </p>

为了脚本操作的方便,可以把术语的定义写入<dfn>标签的title属性。

  1. <p>
  2. 通过 TCP/IP 协议连接的全球性计算机网络,叫做
  3. <dfn title="全球性计算机网络">Internet</dfn>
  4. </p>

上面代码中,title属性的一个作用是,鼠标悬浮的时候,术语的解释会以提示的形式显示出来。

某些时候,术语本身是一个缩写,这时<dfn><abbr>可以结合使用。

  1. <p>
  2. <dfn><abbr title="acquired immune deficiency syndrome">AIDS</abbr><dfn>
  3. 的全称是获得性免疫缺陷综合征。
  4. </p>

<ruby><rp>

<ruby>用于表示东亚文字的语音,比如汉语拼音。它默认会以小字体,显示在文字的上方。

  1. <ruby>
  2. <rp>(</rp><rt>han</rt><rp>)</rp>
  3. <rp>(</rp><rt>zi</rt><rp>)</rp>
  4. </ruby>

上面代码的渲染结果是,汉字上方有小字体的拼音。

<ruby>是一个行内元素,也是一个容器标签,内部还有许多配套的标签。

  • <rp>:标注语音符号的起始符号(默认为半角括号)和结束符号(默认为半角右括号),默认不显示。
  • <rt>:标注语音符号。
  • <rb>:划分文字单位,与语音一一对应。
  • <rbc><rb>的容器,主要作用是将语音显示在文字的右侧。

如果想让拼音不是显示在文字上方,而是显示在文字右侧,写法如下。

  1. <ruby>
  2. <rbc>
  3. <rb></rb><rp>(</rp><rt>han</rt><rp>)</rp>
  4. <rb></rb><rp>(</rp><rt>zi</rt><rp>)</rp>
  5. </rbc>
  6. </ruby>

<bdo><bdi>

大部分文字的阅读方向是从左到右,但是有些文字的方向是从右到左,比如阿拉伯语、希伯来语等。<bdo>标签是一个行内元素,表示文字方向与网页主体内容的方向不一致。

  1. <p>床前明月光,<bdo dir="rtl">霜上地是疑</bdo></p>

上面代码中,<bdo>标签里面的文字,会以相反的方向渲染,结果就是“床前明月光,疑是地上霜”。

<bdo>dir属性,指定具体的文字方向。它有两个值,ltr表示从左到右,rtl表示从右到左。

<bdi>标签用于不确定文字方向的情况。比如,网页有一个部分是用户输入的内容,但是不知道输入内容的文字方向。这种情况就可以使用<bdi>标签,告诉浏览器,不确定文字的方向,由浏览器自己决定。

  1. <p><bdi>床前明月光,疑是地上霜。</bdi></p>