html学习笔记(4)——文本标签和列表标签
文章目录
本文来自于对 HTML教程 的整理。
1. 文本标签
历史上,网页的主要功能是文本展示。所以,HTML 提供了大量的文本处理标签。
1. <div>
<div>
是一个通用标签,表示一个区块(division
)。它没有语义,如果网页需要一个块级元素容器,又没有其他合适的标签,就可以使用这个标签。
它的最常见用途就是提供 CSS
的钩子,用来指定各种样式。所以在早期,下面层层包裹的<div>
就很常见。
|
|
上面代码读起来很费力,因为不带有语义。后来,HTML 5
就提出了语义标签,改进了上面的代码。
|
|
<div>
是无语义的块级元素。下面的例子使用<div>
,将图像和文字组合在一起,构成一个警告区块。
|
|
只要样式上需要多个块级元素组合在一起,就可以使用<div>
。但是,这应该是最后的措施,带有语义的块级标签(比如<article>
、<section>
、<aside>
、<nav>
等)始终应该优先使用,当且仅当没有其他语义元素合适时,才可以使用<div>
。
2. <p>
<p>
标签是一个块级元素,代表文章的一个段落(paragraph
)。不仅是文本,任何想以段落显示的内容,比如图片和表单项,都可以放进<p>
元素。
|
|
上面代码就是一个简单的段落。
3. <span>
<span>
是一个通用目的的行内标签(即不会产生换行),不带有任何语义。它通常用作 CSS
样式的钩子,如果需要对某些行内内容指定样式,就可以把它们放置在<span>
。
|
|
上面代码中,句子里面需要强调的部分,就可以放在<span>
。
4. <br>,<wbr>
<br>
让网页产生一个换行效果。该标签是单独使用的,没有闭合标签。
|
|
浏览器渲染上面代码时,会分成两行,hello
和world
各占一行。
<br>
对于诗歌和地址的换行非常有用。
|
|
上面的代码如果不用<br>
,会显示成一行。
注意,块级元素的间隔,不要使用<br>
来产生,而要使用 CSS
指定。
|
|
上面的代码希望段落之间有两个换行,这时不应该使用<br>
,而应该使用 CSS
。
<wbr>
标签跟<br>
很相似,表示一个可选的断行。如果一行的宽度足够,则不断行;如果宽度不够,需要断行,就在<wbr>
的位置的断行。它是为了防止浏览器在一个很长的单词中间,不正确地断行或者不断行,所以事先标明可以断行的位置,主要用于欧洲一些单词很长的语言或者 URL
的断行。
|
|
上面代码是一个很长的德语单词,为了防止不正确断行,事先用<wbr>
告诉浏览器,可以选择在哪里断行。
5. <hr>
<hr>
用来在一篇文章中分隔两个不同的主题,浏览器会将其渲染为一根水平线。该标签是单独使用的,没有闭合标签。
|
|
上面代码的渲染结果是,两段之间会出现一根水平线。
该标签是历史遗留下来的,建议尽量避免使用。主题之间的分隔可以使用<section>
,如果想要水平线的效果,可以使用 CSS
。
6. <pre>
<pre>
是一个块级元素,表示保留原来的格式(preformatted
),即浏览器会保留该标签内部原始的换行和空格。浏览器默认以等宽字体显示标签内容。
|
|
上面代码中,换行和连续空格都会由于<pre>
标签,而被保留下来,浏览器按照原样输出。
注意,HTML 标签在<pre>
里面还是起作用的。<pre>
只保留空格和换行,不会保留 HTML
标签。
|
|
上面代码中,<pre>
标签的内容会加粗显示。
7. <strong>,<b>
<strong>
是一个行内元素,表示它包含的内容具有很强的重要性,需要引起注意。浏览器会以粗体显示内容。
|
|
<b>
与<strong>
很相似,也表示它包含的内容需要引起注意,浏览器会加粗显示。它是 Boldface 的缩写。
|
|
它与<strong>
的区别在于,由于历史原因,它没有语义,是一个纯样式的标签,违反了语义与样式分离的原则,因此不建议使用,应该优先使用<strong>
标签。
8. <em>,<i>
<em>
是一个行内标签,表示强调(emphasize
),浏览器会以斜体显示它包含的内容。
|
|
虽然浏览器通常会以斜体显示<em>
,但无法保证一定如此,所以最好还是用 CSS
指定一下这个标签的样式。
<i>
标签与<em>
相似,也表示与其他地方有所区别,浏览器会以斜体显示。它是 Italic 的缩写。
|
|
<i>
标签的语义不强,更接近是一个纯样式的标签,建议优先使用<em>
标签代替它。
9. <sub>,<sup>,<var>
<sub>
标签将内容变为下标,<sup>
标签将内容变为上标。它们都是行内元素,主要用于数学公式、分子式等。
|
|
<var>
标签表示代码或数学公式的变量。
|
|
10. <u>,<s>
<u>
标签是一个行内元素,表示对内容提供某种注释,提醒用户这里可能有问题,基本上只用来表示拼写错误。浏览器默认以下划线渲染内容。
|
|
上面代码中,<u>
提示用户这是一个拼写错误,“安份守己”的下方会有一个下划线。
注意,<u>
会产生下划线,由于链接也默认带有下划线,所以必须非常小心使用<u>
标签,避免用户误以为可以点击。万一确有必要使用,最好使用 CSS
改变<u>
的默认样式。
<s>
标签是一个行内元素,为内容加上删除线。
|
|
上面代码中,“三文鱼”会有一根删除线。
11. <blockquote>,<cite>,<q>
<blockquote>
是一个块级标签,表示引用他人的话。浏览器会在样式上,与正常文本区别显示。
|
|
<blockquote>
标签有一个cite
属性,它的值是一个网址,表示引言来源,不会显示在网页上。
<cite>
标签表示引言出处或者作者,浏览器默认使用斜体显示这部分内容。
|
|
<cite>
不一定跟<blockquote>
一起使用。如果文章中提到资料来源,也可以单独使用。
|
|
<q>
是一个行内标签,也表示引用。它与<blockquote>
的区别,就是它不会产生换行。
|
|
上面例子中,引言部分跟前面的说明部分是在同一行里面。
另外,跟<blockquote>
一样,<q>
也有cite
属性,表示引言的来源网址。
注意,浏览器默认会斜体显示<q>
的内容,并且会自动添加半角的双引号。所以,引用中文内容时要小心。
12. <code>
<code>
标签是一个行内元素,表示标签内容是计算机代码,浏览器默认会以等宽字体显示。
|
|
如果要表示多行代码,<code>
标签必须放在<pre>
内部。<code>
本身仅表示一行代码。
|
|
13. <kbd>,<samp>
<kbd>
标签是一个行内元素,原意是用户从键盘输入的内容,现在扩展到各种输入,包括语音输入。浏览器默认以等宽字体显示标签内容。
|
|
<kbd>
可以嵌套,方便指定样式。
|
|
<samp>
标签是一个行内元素,表示计算机程序输出内容的一个例子。浏览器默认以等宽字体显示。
|
|
14. <mark>
<mark>
是一个行内标签,表示突出显示的内容。Chrome 浏览器默认会以亮黄色背景,显示该标签的内容。
|
|
<mark>
很适合在引用的内容(<q>
或<blockquote>
)中,标记出需要关注的句子。
|
|
除了标记感兴趣的文本,<mark>
还可以用于在搜索结果中,标记出匹配的关键词。
注意,不要只为了高亮的效果,而使用这个标签,因为不能保证浏览器的处理方式。如果要保证高亮,还是要使用 CSS
样式。
15. <small>
<small>
是一个行内标签,浏览器会将它包含的内容,以小一号的字号显示,不需要使用 CSS
样式。它通常用于文章附带的版权信息或法律信息。
|
|
16. <time>,<data>
<time>
是一个行内标签,为跟时间相关的内容提供机器可读的格式。
|
|
上面代码中,<time>
表示下周三的具体日期。这方便搜索引擎抓取,或者下一步的其他处理。
<time>
的datetime
属性,用来指定机器可读的日期,可以有多种格式。
- 有效年份:
2011
- 有效月份:
2011-11
- 有效日期:
2011-11-18
- 无年份的日期:
11-18
- 年度的第几周:
2011-W47
- 有效时间:
14:54
、14:54:39
、14:54:39.929
- 日期和时间:
2011-11-18T14:54:39.929
|
|
<data>
标签与<time>
类似,也是提供机器可读的内容,但是用于非时间的场合。
|
|
上面代码中,选手的机读数据就放在<data>
标签的value
属性。
17. <address>
<address>
标签是一个块级元素,表示某人或某个组织的联系方式。
|
|
该标签有几个注意点。
(1)如果是文章里提到的地址(比如提到搬家前的地址),而不是联系信息,不要使用<address>
标签。
(2)<address>
的内容不得有非联系信息,比如发布日期。
(3)<address>
不能嵌套,并且内部不能有标题标签(<h1>
~<h6>
),也不能有<article>
、<aside>
、<section>
、<nav>
、<header>
、<footer>
等标签。
(4)通常,<address>
会放在<footer>
里面,下面是一个例子。
|
|
18. <abbr>
<abbr>
标签是一个行内元素,表示标签内容是一个缩写。它的title
属性给出缩写的完整形式,或者缩写的描述。鼠标悬停在该元素上方时,title
属性值作为提示,会完整显示出来。
|
|
注意,某些浏览器可能对该标签提供圆点下划线。
19. <ins>,<del>
<ins>
标签是一个行内元素,表示原始文档添加(insert
)的内容。<del>
与之类似,表示删除(delete
)的内容。它们通常用于展示文档的删改。
|
|
浏览器默认为<del>
标签的内容加上删除线,为<ins>
标签的内容加上下划线。
这两个标签都有以下属性。
cite
:该属性的值是一个 URL,表示该网址可以解释本次删改。datetime
:表示删改发生的时间。
|
|
20. <dfn>
<dfn>
是一个行内元素,表示标签内容是一个术语(definition
),本段或本句包含它的定义。
|
|
为了脚本操作的方便,可以把术语的定义写入<dfn>
标签的title
属性。
|
|
上面代码中,title
属性的一个作用是,鼠标悬浮的时候,术语的解释会以提示的形式显示出来。
某些时候,术语本身是一个缩写,这时<dfn>
和<abbr>
可以结合使用。
|
|
21. <ruby>
<ruby>
标签表示文字的语音注释,主要用于东亚文字,比如汉语拼音和日语的片假名。它默认将语音注释,以小字体显示在文字的上方。
|
|
上面代码的渲染结果是,汉字
上方有小字体的拼音han zi
。
<ruby>
标签是一个行内元素,也是一个容器标签。如果要使用语音注释,就必须把文字和注释都放在这个标签里面。
<ruby>
的内部还有许多配套的标签。
(1)<rp>
<rp>
标签的用处,是为不支持语音注释的浏览器,提供一个兼容方案。对于那些支持语音注释的浏览器,该标签的内容不显示。
<rp>
标签一般用于放置圆括号,如果遇到不支持的浏览器,就会将语音注释显示在括号里面。
|
|
上面代码在不支持语音注释的浏览器中,渲染结果为汉(han)字(zi)
。遇到支持语音注释的浏览器,就不会显示圆括号。
(2)<rt>
<rt>
标签用于放置语音注释。
(3)<rb>
<rb>
标签用于划分文字单位,与语音注释一一对应。
|
|
(4)<rbc>
,<rtc>
<rbc>
标签表示一组文字,通常包含多个<rb>
元素。<rtc>
标签表示一组语音注释,跟<rbc>
对应。
|
|
上面例子中,汉字
这两个字有两组语音注释,分别是汉语拼音与英语。一组语音注释放在<rbc>
标签中,另一组语音注释放在<rtc>
,用来对应<rbc>
。同时,分别使用style
属性,指定汉语拼音显示在文字下方,英语显示在文字上方。
注意,Chrome 浏览器目前不支持这两个标签。
22. <bdo>,<dbi>
大部分文字的阅读方向是从左到右,但是有些文字的方向是从右到左,比如阿拉伯语、希伯来语等。<bdo>
标签是一个行内元素,表示文字方向与网页主体内容的方向不一致。
|
|
上面代码中,<bdo>
标签里面的文字,会以相反的方向渲染,结果就是“床前明月光,疑是地上霜”。
<bdo>
的dir
属性,指定具体的文字方向。它有两个值,ltr
表示从左到右,rtl
表示从右到左。
<bdi>
标签用于不确定文字方向的情况。比如,网页有一个部分是用户输入的内容,但是不知道输入内容的文字方向。这种情况就可以使用<bdi>
标签,告诉浏览器,不确定文字的方向,由浏览器自己决定。
|
|
2. 列表标签
列表是一系列排列好的项目,主要分成两类:有序列表和无序列表。
有序列表是每个列表项前面有编号,呈现出顺序,就像下面这样。
|
|
无序列表则是列表项前面没有编号,只有一个列表符号,默认是一个圆点。
|
|
1. <ol>
<ol>
标签是一个有序列表容器(ordered list
),会在内部的列表项前面产生数字编号。列表项的顺序有意义时,比如排名,就会采用这个标签。
|
|
上面代码会在列表项 A、B、C 前面,分别产生1、2、3的编号。
<ol>
标签内部可以嵌套<ol>
标签或<ul>
标签,形成多级列表。
|
|
上面代码中,一个有序列表内部嵌套了另一个有序列表,渲染结果如下。
|
|
该标签有以下属性。
-
reversed
reversed
属性产生倒序的数字列表。1 2 3 4 5
<ol reversed> <li>列表项 A</li> <li>列表项 B</li> <li>列表项 C</li> </ol>
上面代码中,列表项 A、B、C 前面,产生的编号是3、2、1。
-
start
start
属性的值是一个整数,表示数字列表的起始编号。1 2 3 4 5
<ol start="5"> <li>列表项 A</li> <li>列表项 B</li> <li>列表项 C</li> </ol>
上面代码中,列表项 A、B、C 前面,产生的编号是5、6、7。
-
type
type
属性指定数字编号的样式。目前,浏览器支持以下样式。a
:小写字母A
:大写字母i
:小写罗马数字I
:大写罗马数字1
:整数(默认值)
1 2 3 4 5
<ol type="a"> <li>列表项 A</li> <li>列表项 B</li> <li>列表项 C</li> </ol>
上面代码中,列表项 A、B、C 前面的编号,分别是英文小写字母a、b、c。
注意,即使编号是字母,
start
属性也依然使用整数。1 2 3 4 5
<ol type="a" start="3"> <li>列表项 A</li> <li>列表项 B</li> <li>列表项 C</li> </ol>
上面代码中,
type
属性指定编号采用小写英文字母,start
属性等于3
,表示从c
开始编号。
2. <ul>
<ul>
标签是一个无序列表容器(unordered list
),会在内部的列表项前面产生实心小圆点,作为列表符号。列表项的顺序无意义时,采用这个标签。
|
|
上面代码的渲染结果是,列表项 A、B、C 前面,分别产生一个实心小圆点,作为列表符号。
<ul>
标签内部可以嵌套<ul>
或<ol>
,形成多级列表。
3. <li>
<li>
表示列表项,用在<ol>
或<ul>
容器之中。
有序列表<ol>
之中,<li>
有一个value
属性,定义当前列表项的编号,后面列表项会从这个值开始编号。
|
|
上面代码中,value
属性指定第二个列表项的编号是4
,因此三个列表项的编号,分别为1、4、5。
4. <dl>,<dt>,<dd>
<dl>
标签是一个块级元素,表示一组术语的列表(description list
)。术语名(description term
)由<dt>
标签定义,术语解释(description detail
)由<dd>
标签定义。<dl>
常用来定义词汇表。
|
|
<dt>
和<dd>
都是块级元素,<dd>
默认会在<dt>
下方缩进显示。上面代码的默认渲染结果如下。
|
|
多个术语(<dt>
)对应一个解释(<dd>
),或者多个解释(<dd>
)对应一个术语(<dt>
),都是合法的。
|
|
上面代码中,A
和B
有共同的解释C
,而D
有两个解释E
和F
。
文章作者 punk1u
上次更新 2022-06-11