什么是 HTML?
HTML(HyperText Markup Language,超文本标记语言)是一种标记语言,它告诉 Web 浏览器如何组织你访问的网页。它可以像 Web 开发者希望的那样复杂或简单。HTML 由一系列的元素组成,你使用这些元素来包围、包装或标记内容的不同部分,使其以某种方式显示或运作。闭合的标签可以使内容成为一个连接到其他页面的超链接、将文字变为斜体等等。例如,考虑下面这行文本:
My cat is very grumpy
如果我们想让这段文本独立成段,我们可以用段落(
)元素来包裹它:
html
My cat is very grumpy
HTML 存在于扩展名为 .html 的文本文件中,这种文件被称为 HTML 文档,或简称文档。在我们之前谈论网页的地方,一个 HTML 文档包含了网页的内容并指定了其结构。
你将遇到的最常见的 HTML 文件是 index.html,它通常用于包含网站主页的内容。同样常见的是看到带有各自 index.html 的子文件夹,因此一个网站可以在不同的位置有多个索引文件。
备注:
HTML 中的标签不区分大小写。这意味着它们可以用大写或小写书写。例如,
剖析一个 HTML 元素
让我们进一步探讨一下上一节中的段落元素:
我们元素的结构是:
开始标签(opening tag):由元素的名称(本例中为段落的 p)包裹在开、闭角括号中组成。这个开始标签标志着元素开始或生效的位置。在此示例中,它位于段落文本的开始之前。
内容(content):这是元素的内容。在此示例中,就是段落的文本。
结束标签(closing tag):这与开始标签相同,只是在元素名称前包含一个正斜杠。这标志着元素的结束。忘记包含结束标签是一个常见的初学者错误,可能会产生奇特的结果。
元素是开始标签、内容和结束标签的总和。
备注:
可以前往我们的学习伙伴 Scrimba 的 HTML 标签 MDN 学习伙伴 资料,获取关于 HTML 标签的交互式解释。
创建你的第一个 HTML 元素
让我们来练习编写你自己的 HTML 元素:
点击下面代码块中的“Play”在 MDN 代码演练场中编辑示例。
用 和 标签包裹这行文本。要打开元素,请将开始标签 放在行的开头。要关闭元素,请将结束标签 放在行的末尾。这样做应该会使输出面板中渲染的文本变为斜体格式。
如果你想挑战一下,可以尝试查找更多 HTML 元素并将其应用于文本示例。
如果你犯了错误,可以使用 MDN 代码演练场中的“Reset”按钮清除你的工作。如果你实在卡住了,可以查看代码块下方的解决方案。
html这是我的文本。
点击这里显示解决方案
你完成后的 HTML 行应该像这样:
html这是我的文本。
嵌套元素
元素可以放置在其他元素内部。这被称为嵌套。如果我们想要表明我们的小猫脾气很暴躁,我们可以将很这个词用 元素包裹起来,这意味着这个词将以粗体的文本格式显示:
html
我们的小猫脾气很暴躁。
嵌套有正确和错误的方式。在上面的例子中,我们先打开了 p 元素,然后打开了 strong 元素。为了正确嵌套,我们应该先关闭 strong 元素,然后再关闭 p 元素。
以下是错误嵌套方式的示例:
html
我们的小猫脾气很暴躁。
标签必须以它们相互嵌套或分离的方式打开和关闭。如果像上面的例子那样重叠,浏览器就必须猜测你的意图。这种猜测可能会导致意想不到的结果。
空元素
并非所有元素都遵循开始标签、内容和结束标签的模式。有些元素只包含一个标签,通常用于在文档中插入/嵌入某些东西。这类元素被称为空元素。例如, 元素可以在页面上嵌入一个图像文件:
html
src="https://raw.githubusercontent.com/mdn/beginner-html-site/gh-pages/images/firefox-icon.png"
alt="Firefox 图标" />
这将输出以下内容:
备注:
在 HTML 中,没有要求在空元素的标签末尾添加 /,例如:
。然而,这也是一种有效的语法,当你希望你的 HTML 是有效的 XML 时,可以这样做。
属性
元素也可以有属性。属性看起来是这样的:
属性包含关于元素的额外信息,这些信息不会出现在内容中。在这个例子中,class 属性是一个标识名称,用于通过样式信息来定位元素。
一个属性应该有:
一个在它和元素名之间的空格。(对于拥有多个属性的元素,属性之间也应该用空格分隔。)
属性名,后跟一个等号。
一个属性值,用开始和结束的引号包裹。
为元素添加属性
现在又轮到你了。在这一节中,我们将让你向 元素添加属性,以便在页面上显示一张图片。
元素可以接受多个属性,包括:
src:一个必需的属性,指定图像的位置。例如:src="https://raw.githubusercontent.com/mdn/beginner-html-site/gh-pages/images/firefox-icon.png"。
alt:图像的文本描述。例如:alt="Firefox 图标"。
width:图像的宽度,单位为像素。例如:width="300"。
height:图像的高度,单位为像素。例如:height="300"。
按照以下步骤完成任务:
点击下面代码块中的“Play”在 MDN 代码演练场中编辑示例。
在网上找到你最喜欢的图片,右键单击它,然后按复制图片链接/地址。
回到 MDN 代码演练场,将 src 属性添加到 元素,并将其值设置为第 2 步中的链接。
将 alt 属性设置为对图片的适当描述。
将 width 属性设置为一个值,比如 300,这样你可以在输出面板中更好地看到图片。如果需要可以进行调整。
如果你犯了错误,可以使用 MDN 代码演练场中的“Reset”按钮清除你的工作。如果你实在卡住了,可以查看代码块下方的解决方案。
html
点击这里显示解决方案
你完成后的 HTML 元素应该像这样:
html
布尔属性
有时你会看到没有值的属性。这是完全可以接受的。这些被称为布尔属性。当一个布尔属性没有值,或有任何值(甚至像 "false")时,该布尔属性总是被设置为 true。否则,如果该属性没有写在 HTML 标签中,该属性就被设置为 false。规范要求该属性的值要么是空字符串(包括属性没有明确指定值时),要么与属性的名称相同,但其他值的作用也一样。例如,考虑 disabled 属性,你可以把它赋给表单输入元素。(你可以用它来禁用表单输入元素,这样用户就不能输入内容了。被禁用的元素通常呈现为灰色。)例如:
html
作为简写,可以这样写:
html
作为参考,上面的例子还包括一个非禁用的表单输入元素。上面的 HTML 会产生以下结果:
省略属性值周围的引号
如果你查看许多其他网站的代码,你可能会遇到一些奇怪的标记样式,包括没有引号的属性值。这在某些情况下是允许的,但在其他情况下也可能破坏你的标记。下面代码片段中的 元素被称为锚点。锚点包裹文本,并将其变成链接。href 属性指定了链接指向的网址。你可以只用 href 属性写出这个基本版本,像这样:
html最喜欢的网站
锚点也可以有一个 title 属性,用来描述链接的页面。然而,一旦我们像 href 属性一样添加 title,问题就来了:
html最喜欢的网站
如上所示,浏览器会误解标记,将 title 属性误认为三个属性:一个值为 The 的 title 属性,以及两个布尔属性 Mozilla 和 homepage。显然,这不是我们想要的!它会导致错误或意想不到的行为,正如你在下面的实时示例中看到的那样。试着将鼠标悬停在链接上查看标题文本!
始终包含属性引号。这样可以避免此类问题,并使代码更具可读性。
单引号还是双引号?
在本文中,你会注意到属性都是用双引号包裹的。然而,你可能在某些 HTML 代码中看到单引号。这是一个风格问题。你可以随意选择你喜欢的一种。下面这两行是等效的:
html一个指向示例的链接。
确保不要混合使用单引号和双引号。下面的例子显示了一种会出错的引号混合使用方式:
一个指向示例的链接。
要在相同类型的引号内使用引号(单引号或双引号),请使用字符引用。例如,这样做会出错:
html一个指向示例的链接。
相反,你应该这样做:
html一个指向示例的链接。
剖析 HTML 文档
单个 HTML 元素本身并不是很有用。接下来,让我们看看单个元素如何组合成一个完整的 HTML 页面:
html
这是我的页面
这里我们有:
:文档类型声明(doctype)。在 HTML 早期(1991-1992 年),doctype 旨在作为一套规则的链接,HTML 页面必须遵循这些规则才能被认为是好的 HTML。过去的 doctype 看起来像这样:
html
最近,doctype 成为了一个历史遗留物,为了让其他一切正常工作而必须包含它。 是算作有效 doctype 的最短字符序列。你只需要知道这些!
: 元素。这个元素包裹了页面上的所有内容。它有时被称为根元素。
: 元素。这个元素充当一个容器,用于存放你想包含在 HTML 页面中但不向页面浏览者显示的内容。这包括会出现在搜索结果中的关键字和页面描述、用于样式化内容的 CSS、字符集声明等等。你将在本系列的下一篇文章中学到更多相关内容。: 元素。这个元素代表了不能由其他 HTML 元相关元素(如