基础知识

超文本标记语言 (英语:Hypertext Markup Language,简称:HTML ) 是一种用来结构化 Web 网页及其内容的标记语言。网页内容可以是:一组段落、一个重点信息列表、也可以含有图片和数据表。

HTML 不是一门编程语言,而是一种用于定义内容结构的标记语言。HTML 由一系列的元素组成,这些元素可以用来包围不同部分的内容,使其以某种方式呈现或者工作。 一对标签可以为一段文字或者一张图片添加超链接,将文字设置为斜体,改变字号,等等。 例如,键入下面一行内容:

我的猫非常脾气暴躁

可以将这行文字封装成一个段落元素来使其在单独一行呈现:

<p>我的猫非常脾气暴躁</p>

# 元素

让我们深入探索一下这个段落元素:

段落元素

这个元素的主要部分有:

  1. 开始标签:包含元素的名称(本例为 p),被大于号、小于号所包围。表示元素从这里开始或者开始起作用 —— 在本例中即段落由此开始。
  2. 结束标签:与开始标签相似,只是其在元素名之前包含了一个斜杠。这表示着元素的结尾 —— 在本例中即段落在此结束。初学者常常会犯忘记包含结束标签的错误,这可能会产生一些奇怪的结果。
  3. 内容:元素的内容,本例中就是所输入的文本本身。
  4. 元素:开始标签、结束标签与内容相结合,便是一个完整的元素。

元素也可以有属性

元素属性

属性包含了关于元素的一些额外信息,这些信息本身不应显现在内容中。本例中,class 是属性名称,editor-note 是属性的值 。class 属性可为元素提供一个标识名称,以便进一步为元素指定样式或进行其他操作时使用。

属性应该包含:

  1. 在属性与元素名称(或上一个属性,如果有超过一个属性的话)之间的空格符;
  2. 属性的名称,并接上一个等号;
  3. 由引号所包围的属性值。

注:不包含 ASCII 空格(以及 ", ', `, =, <, > )的简单属性值可以不使用引号,但是建议将所有属性值用引号括起来,这样的代码一致性更佳,更易于阅读。

# 块级元素

块级元素占据其父元素(容器)的整个水平空间,垂直空间等于其内容高度,因此创建了一个「块」。

块级元素只能出现在 <body> 元素内。一般块级元素可以包含行内元素和其他块级元素,这种结构上的包含继承区别可以使块级元素创建比行内元素更「大型」的结构。

<!-- p 为块级元素 -->
<p>This paragraph is a block-level element; its background has been colored to display the paragraph's parent element.</p>

块级元素列表:

  • <address>: 联系方式
  • <article>: 文章内容
  • <aside>: 伴随内容
  • <blockquote>: 引用内容
  • <dd>: 定义列表中定义条目描述
  • <div>: 文档分区
  • <dl>: 定义列表
  • <fieldset>: 表单元素分组
  • <figcaption>: 图文信息组
  • <footer>: 区段尾或页尾
  • <form>: 表单
  • <h1>, <h2>, <h3>, <h4>, <h5>, <h6>: 标题级别 1-6
  • <header>: 区段头或页头
  • <hgroup>: 标题组
  • <hr>: 水平分割线
  • <ol>: 有序列表
  • <p>: 行
  • <pre>: 预格式化文本
  • <section>: 一个页面区段
  • <table>: 表格
  • <ul>: 无序列表

# 行内元素

行内元素只占据它对应标签的边框所包含的空间。一般情况下,行内元素只能包含数据和其他行内元素。默认情况下,行内元素不会以新行开始,而块级元素会新起一行。

<!-- span 为行内元素 -->
<p>This <span>span</span> is an inline element; its background has been colored to display both the beginning and end of the inline element's influence</p>

行内元素列表:

  • b, big, i, small, tt
  • abbr, acronym, cite, code, dfn, em, kbd, strong, samp, var
  • a, bdo, br, img, map, object, q, script, span, sub, sup
  • button, input, label, select, textarea

# 嵌套元素

也可以将一个元素置于其他元素之中 —— 称作嵌套。要表明猫咪非常暴躁,可以将「暴躁」用 <strong> 元素包围,「爆」字将突出显示:

<p>我的猫咪脾气<strong>暴躁</strong>:)</p>

必须保证元素嵌套次序正确:本例首先使用 <p> 标签,然后是 <strong> 标签,因此要先结束 <strong> 标签,最后再结束 <p> 标签。这样是不对的:

<p>我的猫咪脾气<strong>暴躁</p></strong>

元素必须正确地开始和结束,才能清楚地显示出正确的嵌套层次。否则浏览器就得自己猜测,虽然它会竭尽全力,但很大程度不会给你期望的结果。所以一定要避免!

# 空元素

不包含任何内容的元素称为空元素。比如 <img> 元素:

<img src="images/firefox-icon.png" alt="测试图片">

本元素包含两个属性,但是并没有 </img> 结束标签,元素里也没有内容。这是因为图像元素不需要通过内容来产生效果,它的作用是向其所在的位置嵌入一个图像。

# 文档

以上介绍了一些基本的 HTML 元素,但孤木不成林。现在来看看单个元素如何彼此协同构成一个完整的 HTML 页面:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>测试页面</title>
    </head>
    <body>
        <img src="images/firefox-icon.png" alt="测试图片">
    </body>
</html>

这里有:

  • <!DOCTYPE html>: 文档类型。混沌初分,HTML 尚在襁褓(大约是 1991/92 年)之时,DOCTYPE 用来链接一些 HTML 编写守则,比如自动查错之类。DOCTYPE 在当今作用有限,仅用于保证文档正常读取。现在知道这些就足够了。
  • <html></html>: <html> 元素。该元素包含整个页面的内容,也称作根元素。
  • <head></head>: <head> 元素。该元素的内容对用户不可见,其中包含例如面向搜索引擎的搜索关键字(keywords)、页面描述、CSS 样式表和字符编码声明等。
  • <meta charset="utf-8">: 该元素指定文档使用 UTF-8 字符编码 ,UTF-8 包括绝大多数人类已知语言的字符。基本上 UTF-8 可以处理任何文本内容,还可以避免以后出现某些问题,没有理由再选用其他编码。
  • <title></title>: <title> 元素。该元素设置页面的标题,显示在浏览器标签页上,也作为收藏网页的描述文字。
  • <body></body>: <body> 元素。该元素包含期望让用户在访问页面时看到的内容,包括文本、图像、视频、游戏、可播放的音轨或其他内容。

# 图像

重温一下 <img> 元素:

<img src="images/firefox-icon.png" alt="测试图片">

像之前所讲,该元素通过包含图像文件路径的地址属性 src,可在所在位置嵌入图像。

该元素还包括一个替换文字属性 alt,是图像的描述内容,用于当图像不能被用户看见时显示,不可见的原因可能是:

  1. 用户有视觉障碍。视障用户可以使用屏幕阅读器来朗读 alt 属性的内容。
  2. 有些错误使图像无法显示。可以试着故意将 src 属性里的路径改错。保存并刷新页面就可以在图像位置看到: 测试图片

alt 属性的关键字即「描述文本」。alt 文本应向用户完整地传递图像要表达的意思。用「测试图片」来描述 Firefox 标志并不合适,修改成「Firefox 标志:一只盘旋在地球上的火狐」就好多了。

可以试着为图像编写一些更好的 alt 文本。

注:更多信息请参阅 无障碍访问 (opens new window)

# 链接

链接非常重要 — 它们赋予 Web 网络属性。要植入一个链接,我们需要使用一个简单的元素 — <a>a 是「anchor」(锚)的缩写。要将一些文本添加到链接中,只需如下几步:

  1. 选择一些文本。比如「Mozilla 宣言」。
  2. 将文本包含在 <a> 元素内,就像这样:
    <a>Mozilla 宣言</a>
    
  3. 为此 <a> 元素添加一个 href 属性,就像这样:
    <a href="">Mozilla 宣言</a>
    
  4. 把属性的值设置为所需网址:
    <a href="https://www.mozilla.org/zh-CN/about/manifesto/">Mozilla 宣言</a>
    

如果网址开始部分省略了 https:// 或者 http://,可能会得到错误的结果。在完成一个链接后,可以试着点击它来确保指向正确。

href 这个名字可能开始看起来有点令人费解,代表超文本引用(hypertext reference)。

# 标记文本

本段包含了一些最常用的文本标记 HTML 元素。

# 标题

标题元素可用于指定内容的标题和子标题。就像一本书的书名、每章的大标题、小标题,等。HTML 文档也是一样。HTML 包括六个级别的标题, <h1><h6>,一般最多用到 3-4 级标题。

<h1>主标题</h1>
<h2>顶层标题</h2>
<h3>子标题</h3>
<h4>次子标题</h4>

注:你可以看到第一级标题是有隐式的主题样式。不要使用标题元素来加大、加粗字体,因为标题对于 无障碍访问 (opens new window)搜索引擎优化 (opens new window) 等问题非常有意义。要保持页面结构清晰,标题整洁,不要发生标题级别跳跃。

# 段落

如上文所讲,<p> 元素是用来指定段落的。通常用于指定常规的文本内容:

<p>这是一个段落</p>

# 列表

Web 上的许多内容都是列表,HTML 有一些特别的列表元素。标记列表通常包括至少两个元素。最常用的列表类型为:

  1. 无序列表Unordered List,无序列表中项目的顺序并不重要,就像购物列表。用一个 <ul> 元素包围。
  2. 有序列表Ordered List,有序列表中项目的顺序很重要,就像烹调指南。用一个 <ol> 元素包围。

列表的每个项目用一个列表项目(List Item)元素 <li> 包围。

比如,要将下面的段落片段改成一个列表:

<p>Mozilla 是一个全球社区,这里聚集着来自五湖四海的技术人员、思考者和建造者,我们致力于……</p>

可以这样更改标记:

<p>Mozilla 是一个全球社区,这里聚集着来自五湖四海的</p>

<ul>
    <li>技术人员</li>
    <li>思考者</li>
    <li>建造者</li>
</ul>

<p>我们致力于……</p>

# 标签速查表

标签 描述 版本 属性
<!--...--> 定义注释 4/5 none
<!DOCTYPE> 定义文档类型 4/5 none
<a> 定义超链接,用于从一个页面链接到另一个页面。 4/5 href | hreflang | media | ping | rel | target | type
<abbr> 定义缩写 4/5 全局属性
<acronym> 定义首字母缩写 4 -
<address> 定义文档作者或拥有者的联系信息 . 4/5 全局属性
<applet> 定义嵌入的 applet 4 -
<area> 定义图像映射内部的区域(图像映射指的是带有可点击区域的图像)。 4/5 alt | coords | href | hreflang | media | ping | rel | shape | target | type
<article> 定义独立的内容 5 全局属性
<aside> 定义页面内容之外的内容 5 全局属性
<audio> 定义声音,比如音乐或其他音频流。 5 autobuffer | autoplay | controls | loop | src
<b> 定义粗体文本 , 用于强调某些文本 4/5 全局属性
<base> 定义页面上的所有链接规定默认地址或默认目标 4/5 href | target
<basefont> 定义文档中所有文本的默认颜色、大小和字体 4 -
<bb> 定义文本的文本方向,使其脱离其周围文本的方向设置。 5 type
<bdi> 指的是 bidi 隔离, 允许您设置一段文本,使其脱离其父元素的文本方向设置 . 5 dir
<bdo> 定义文本显示的方向。 4/5 dir
<big> 定义大号文本。 4 -
<blockquote> 定义摘自另一个源的块引用 。 4/5 cite
<body> 定义文档的主体 。 5 全局属性
<br> 插入换行符。 4/5 全局属性
<button> 定义按钮。 4/5 autofocus | disabled | form | formaction | formenctype | formme-thod | formnovalidate | formtarget | name | type | value
<canvas> 定义图形,比如图表和其他图像 5 height | width
<caption> 定义表格标题。 4/5 全局属性
<center> 定义居中的文本。 4 -
<cite> 定义作品(比如书籍、歌曲、电影、电视节目、绘画、雕塑等等)的标题。 4/5 全局属性
<code> 定义计算机代码文本。 4/5 全局属性
<col> 定义为表格中的一个或多个列定义属性值。 。 4/5 span
<colgroup> 定义对表格中的列进行组合,以便对其进行格式化。 4/5 span
<command> 定义命令按钮。 5 checked | default | disabled | hidden | icon | label | radiogroup | type
<datagrid> 定义可选数据的列表。 datagrid 作为树列表来显示。 5 disabled | multipe
<datalist> 定义下拉列表。 请与 input 元素配合使用该元素,来定义 input 可能的值。 5 全局属性
<dd> 定义一个定义列表中对项目的描述 。 4/5 全局属性
<del> 定义删除文本。 4/5 cite | datetime
<details> 定义描述文档或文档某个部分的细节。 5 open
<dialog> 定义对话,比如交谈 5 全局属性
<dir> 定义目录列表。 4 -
<div> 定义文档中的一个部分。 4/5 全局属性
<dfn> 定义一个定义项目。 4/5 title
<dl> 定义一个定义列表 . 4/5 全局属性
<dt> 定义一个定义列表中的一个项目。 4/5 全局属性
<em> 呈现为被强调的文本。 4/5 全局属性
<embed> 定义嵌入的内容,比如插件 5 height | src | type | width
<fieldset> 定义用于从逻辑上将表单中的元素组合起来。 4/5 disabled | form | name
标签 描述 版本 属性
<figcaption> 定义 fiqure 元素的标题(caption)。 5 全局属性
<figure> 规定独立的流内容(图像、图表、照片、代码等等)。 5 全局属性
<font> 规定文本的字体、大小和颜色。 4 -
<footer> 定义 section 或 document 的页脚。 5 全局属性
<form> 用于创建供用户输入的 HTML 表单 4/5 action | date | replace | accept | accept-charset | enctype | method | target
<frame> 定义子窗口(框架) 4 -
<frameset> 定义框架集。 4 -
<h1> to <h6> 定义标题。<h1> 定义最大的标题。<h6> 定义最小的标题 4/5 全局属性
<head> 所有头部元素的容器。位于 <head> 内部的元素可以包含脚本、指引浏览器找到样式表、提供元信息,等等。 4/5
<header> 定义文档的页眉(介绍信息)。 5 全局属性
<hgroup> 用于对网页或区段(section)的标题进行组合。 4/5 全局属性
<hr> 水平线,它应该定义内容中的主题变化 4/5 全局属性
<html> 告知浏览器这是一个 HTML 文档。 4/5 manifest
<i> 呈现斜体的文本。 4/5 全局属性
<iframe> 创建包含另一个文档的行内框架。 4/5 src | name | sandbox | seamless | width | height
<img> 定义 HTML 页面中的图像。 4/5 alt | src | height | ismap | usemap | width
<input> 规定用户可输入数据的输入字段。 4/5 accept | alt | auto-complete | autofocus | checked | disabled | from | formaction | formenctype | formme-thod | formnovalidate | formtarget | height | list | max | maxiength | min | multipe | name | pattern | placeholder | readonly | required | size | src | step | type | value | width
<ins> 定义文档的其余部分之外的插入文本。 4/5 cite | datetime
<isindex> 定义单行的输入域。 4 -
<keygen> 规定用于表单的密钥对生成器字段。 5 autofocus | challenge | disabled | form | keytype | name
<kbd> 定义键盘文本。它表示文本是从键盘上键入的。它经常用在与计算机相关的文档或手册中。 4/5 全局属性
<label> 为 input 元素定义标签(label) 4/5 for | form
<legend> 为以下元素定义标题(caption):<fieldset><figure><details> 4/5 全局属性
<li> 定义列表项,有序列表和无序列表中都使用 <li> 标签。 4/5 value
<link> 定义文档与外部资源之间的关系。 大多数时候都用来连接样式表。 4/5 href | rel | media | hreflang | type | sizes
<mark> 定义带有记号的文本。请在需要突出显示文本时使用 <m> 标签 5 全局属性
<map> 定义客户端图像映射。图像映射指的是带有可点击区域的图像。 4/5 label | type
<menu> 定义菜单列表。当希望列出表单控件时使用该标签。 5 autosubmit | compact | label | type
<meta> 可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词。 5 charset | content | http-equiv | name | scheme
<meter> 定义度量衡。仅用于已知最大和最小值的度量。 5 high | low | max | min | optimum | value
<nav> 定义导航链接的部分。 5 全局属性
<noframes> 向浏览器显示无法处理框架的提示文本。 4 -
<noscript> 定义在脚本未被执行时的替代内容(文本)。 4/5
标签 描述 版本 属性
<object> 定义一个嵌入的对象。 4/5 data | height | type | usemap | width | object
<ol> 定义有序列表。 4/5 compact | start | reversed
<optgroup> 定义选项组。此元素允许您组合选项。当您使用一个长的选项列表时,对相关的选项进行组合会使处理更加容易。 4/5 disabled | label
<option> 定义下拉列表中的一个选项。 4/5 disabled | label | selected | value
<output> 定义不同类型的输出,比如脚本的输出。 5 form | for | name
<p> 定义段落 4/5 全局属性
<param> 允许您为插入 XHTML 文档的对象规定 run-time 设置,也就是说,此标签可为包含它的 <object> 标签提供参数。 4/5 name | value | type | valuetype
<pre> 定义预格式化文本。 4/5 全局属性
<progress> 定义运行中的进度(进程)。 5 max | value
<q> 定义一个短的引用。 4/5 cite
<ruby> 定义 ruby 注释。 5 全局属性
<rp> 定义若浏览器不支持 ruby 元素显示的内容。 5 全局属性
<rt> 义 ruby 注释的解释。 5 全局属性
<s> 定义加删除线的文本 4 -
<samp> 定义样本计算机代码。 4/5 全局属性
<script> 定义脚本。 4/5 async | type | defer | src | charset
<section> 定义文档中的节(section、区段)。比如章节、页眉、页脚或文档中的其他部分 5 cite
<select> 创建下拉列表 4/5 autofocus | data | disabled | form | multiple | name
<small> 将旁注 (side comments) 呈现为小型文本。 4/5 全局属性
<source> 为媒介元素(比如 <video><audio>)定义媒介资源。 5 media | src | type
<span> 用于对文档中的行内元素进行组合 4/5 全局属性
<strike> 定义加删除线的文本。 4 -
<strong> 定义重要的文本 . 4/5 全局属性
<style> 定义 HTML 文档的样式信息。 4/5 media | type | scoped
<sub> 定义下标文本 4/5 全局属性
<sup> 定义上标文本。 4/5 全局属性
<summary> 包含 details 元素的标题,"details" 元素用于描述有关文档或文档片段的详细信息。 4/5 全局属性
<table> 定义 HTML 表格 4/5 全局属性
<tbody> 定义表格的主体。 4/5 全局属性
<td> 定义表格单元 4/5 colspan | rowspan | headers
<textarea> 定义一个文本区域 (text-area) (一个多行的文本输入区域)。 4/5 autofocus | cols | disabled | form | name | feadonly | required | required | rows | maxlength | placeholder | wrap
<tfoot> 定义表格的页脚(脚注) 4/5 全局属性
<th> 定义 HTML 表格中的表头单元格。 4/5 colspan | rowspan | scope
<thead> 定义表格的表头。 4/5 全局属性
<time> 定义公历的时间(24 小时制)或日期,时间和时区偏移是可选的。 5 datetime
<title> 定义文档的标题 4
<tr> 定义表格中的行。 4/5 全局属性
<track> 为诸如 video 元素之类的媒介规定外部文本轨道。 5 default | kind | label | src | srclang
<tt> 定义打字机文本。 4 -
<u> 定义下划线文本 。 4 -
<ul> 定义无序列表。 4/5 全局属性
<var> 定义变量。 4/5 全局属性
<video> 定义视频,比如电影片段或其他视频流。 5 src | poster | autobuffer | autoplay | loop | controls | width | height
<xmp> 定义预格式文本。 4 -
上次更新: 2022/6/21 10:24:01