举个例子：
- **\<!DOCTYPE html>** 声明为 HTML5 文档
- **\<html>** 元素是 HTML 页面的根元素
- **\<head>** 元素包含了文档的元（meta）数据，如 **\<meta     charset="utf-8">** 定义网页编码格式为 **utf-8**。
- **\<title>** 元素描述了文档的标题
- **\<body>** 元素包含了可见的页面内容
- **\<h1>** 元素定义一个大标题
- **\<p>** 元素定义一个段落

**注：在浏览器的页面上使用键盘上的 F12 按键开启调试模式，就可以看到组成标签。**

## **什么是 HTML?**

HTML 是用来描述网页的一种语言。

- HTML 指的是超文本标记语言: **H**yper**T**ext **M**arkup **L**anguage
- HTML 不是一种编程语言，而是一种**标记**语言
- 标记语言是一套**标记标签** (markup tag)
- HTML 使用标记标签来**描述**网页
- HTML 文档包含了HTML **标签**及**文本**内容
- HTML文档也叫做 **web 页面**

### **HTML 标签**

HTML 标记标签通常被称为 HTML 标签 (HTML tag)。

- HTML 标签是由*尖括号*包围的关键词，比如\<html>
- HTML 标签通常是*成对出现*的，比如\<b> 和 \</b>
- 标签对中的第一个标签是*开始标签*，第二个标签是*结束标签*
- 开始和结束标签也被称为*开放标签*和*闭合标签*

<标签>内容</标签>


### HTML 元素:

"HTML 标签" 和 "HTML 元素" 通常都是描述同样的意思.

但是严格来讲, 一个 HTML 元素包含了开始标签与结束标签，如下实例:

HTML 元素:
`<p>这是一个段落。</p>`
<p>这是一个段落。</p>

###  Web浏览器

（如谷歌浏览器，Internet Explorer，Firefox，Safari）是用于读取HTML文件，并将其作为网页显示。

浏览器并不是直接显示的HTML标签，但可以使用标签来决定如何展现HTML页面的内容给用户

 只有 \<body> 区域才会在浏览器中显示。

### **\<!DOCTYPE> 声明**

<!DOCTYPE>声明有助于浏览器中正确显示网页。

网络上有很多不同的文件，如果能够正确声明HTML的版本，浏览器就能正确显示网页内容。

doctype 声明是不区分大小写的，以下方式均可：

```
<!DOCTYPE html>

<!DOCTYPE HTML>

<!doctype html>

<!Doctype Html>
```



### **通用声明**

**HTML5**

\<!DOCTYPE html>


**中文编码**

目前在大部分浏览器中，直接输出中文会出现中文乱码的情况，这时候我们就需要在头部将字符声明为 UTF-8 或 GBK。

**HTML 实例**

```
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>
页面标题</title>
</head>
<body>
 
<h1>我的第一个标题</h1>
 
<p>我的第一个段落。</p>
 
</body>
</html>
```

**保存 html 文件时，文档编码和 meta 设置的编码，一定要相同，只要不相同，就一定会出现乱码！**

**之所以一定要写上\<!doctype html>，就是为了防止浏览器的怪异模式，强制浏览器按照标准模式渲染网页！**

## **HTML 元素**

HTML 文档由 HTML 元素定义。

**HTML 元素**

开始标签、结束标签和元素内容；

| **开始标签 \***          | **元素内容** | **结束标签 \*** |
| ------------------------ | ------------ | --------------- |
| \<p>                     | 这是一个段落 | \</p>           |
| \<a  href="default.htm"> | 这是一个链接 | \</a>           |
| \<br>                    | 换行         |                 |

\*开始标签常被称为**起始标签（opening tag）**，结束标签常称为**闭合标签（closing tag）**。



**HTML 元素语法**

- HTML 元素以**开始标签**起始
- HTML 元素以**结束标签**终止
- **元素的内容**是开始标签与结束标签之间的内容
- 某些 HTML 元素具有**空内容（empty content）**
- 空元素**在开始标签中进行关闭**（以开始标签的结束而结束）
- 大多数 HTML 元素可拥有**属性**

 

**嵌套的 HTML 元素**

大多数 HTML 元素可以嵌套（HTML 元素可以包含其他 HTML 元素）。

HTML 文档由相互嵌套的 HTML 元素构成。

\<p> 元素定义了 HTML 文档中的一个段落。

这个元素拥有一个开始标签 \<p> 以及一个结束标签 \</p>。

<p>这是第一个段落。</p>
元素内容是: 这是第一个段落。  

\<body> 元素定义了 HTML 文档的主体。
这个元素拥有一个开始标签 \<body> 以及一个结束标签\</body>。
<body>
<p>这是第一个段落。</p>
</body>  

元素内容是另一个 HTML 元素（p 元素）。  

\<html> 元素定义了整个 HTML 文档。
这个元素拥有一个开始标签 \<html> ，以及一个结束标签 \</html>.
<html>

<body>

<p>这是第一个段落。</p>
</body>

</html>
元素内容是另一个 HTML 元素（body 元素）。   

**HTML 空元素**

没有内容的 HTML 元素被称为空元素。空元素是在开始标签中关闭的。

\<br> 就是没有关闭标签的空元素（\<br> 标签定义换行）。

在 XHTML、XML 以及未来版本的 HTML 中，所有元素都必须被关闭。

在开始标签中添加斜杠，比如 \<br />，是关闭空元素的正确方法，HTML、XHTML 和 XML 都接受这种方式。

即使 \<br> 在所有浏览器中都是有效的，但使用 \<br /> 其实是更长远的保障。

**HTML 提示：使用小写标签**

HTML 标签对大小写不敏感：\<P> 等同于 \<p>。许多网站都使用大写的 HTML 标签。

万维网联盟（W3C）在 HTML 4 中**推荐**使用小写，而在未来 (X)HTML 版本中**强制**使用小写。

## **HTML 属性**



属性是 HTML 元素提供的附加信息。

属性通常出现在 HTML 标签的开始标签中，用于定义元素的行为、样式、内容或其他特性。

属性总是以 **name="value"** 的形式写在标签内，**name** 是属性的名称，**value** 是属性的值。



**HTML 属性**

- HTML 元素可以设置**属性**
- 属性可以在元素中添加**附加信息**
- 属性一般描述于**开始标签**
- 属性总是以名称/值对的形式出现，**比如：name="value"**。

**HTML 属性常用引用属性值**

属性值应该始终被包括在引号内。

双引号是最常用的，不过使用单引号也没有问题。

使用双引号：
`<a href="https://www.runoob.com">Link</a>`
<a href="https://www.runoob.com">Link</a>

使用单引号：
`<a href='https://www.runoob.com'>Link</a>`
<a href='https://www.runoob.com'>Link</a>

 [HTML 标签参考手册](https://www.runoob.com/tags/html-reference.html)。

**全局属性**

全局属性是所有 HTML 元素都可以使用的属性。

**id**：为元素指定唯一的标识符。

`<div id="header">This is the header</div>`

**class**：为元素指定一个或多个类名，用于 CSS 或 JavaScript 选择。

`<p class="text highlight">This is a highlighted text.</p>`

**style**：用于直接在元素上应用 CSS 样式。

`<p style="color: blue; font-size: 14px;">This is a styled paragraph.</p>`
<p style="color: blue; font-size: 14px;">This is a styled paragraph.</p>

**title**：为元素提供额外的提示信息，通常在鼠标悬停时显示。

`<abbr title="HyperText Markup Language">HTML</abbr>`

<abbr title="HyperText Markup Language">HTML</abbr>

**data-\***：用于存储自定义数据，通常通过 JavaScript 访问。

`<div data-user-id="12345">User Info</div>`

**特定元素的属性**

某些属性仅适用于特定的 HTML 元素。

**href**（用于 \<a> 和 \<link> 元素）：指定链接的目标 URL。

`<a href="https://www.example.com">Visit Example</a>`
<a href="https://www.example.com">Visit Example</a>

**src**（用于 \<img>, \<script>, \<iframe> 等元素）：指定外部资源的 URL。

`<img src="image.jpg" alt="An example image">`
<img src="image.jpg" alt="An example image">

**alt**（用于 \<img> 元素）：为图像提供替代文本，当图像无法显示时显示。

`<img src="image.jpg" alt="An example image">`
<img src="image.jpg" alt="An example image">

**type**（用于 \<input> 和 \<button> 元素）：指定输入控件的类型。

`<input type="text" placeholder="Enter your name">`
<input type="text" placeholder="Enter your name">

**value**（用于 \<input>, \<button>, \<option> 等元素）：指定元素的初始值。

`<input type="text" value="Default Value">`
<input type="text" value="Default Value">

disabled（用于表单元素）：禁用元素，使其不可交互。

`<input type="text" disabled>`
<input type="text" disabled>


**checked**（用于 \<input type="checkbox"> 和 \<input type="radio">）：指定复选框或单选按钮是否被选中。

`<input type="checkbox" checked>`
<input type="checkbox" checked>

**placeholder**（用于 \<input> 和 \<textarea> 元素）：在输入框中显示提示文本。

`<input type="text" placeholder="Enter your email">`
<input type="text" placeholder="Enter your email">


**target**（用于 \<a> 和 \<form> 元素）：指定链接或表单提交的目标窗口或框架。

`<a href="https://www.example.com" target="_blank">Open in new tab</a>`
<a href="https://www.example.com" target="_blank">Open in new tab</a>

**布尔属性**

布尔属性是指不需要值的属性，它们的存在即表示 true，不存在则表示 false。

**disabled**：禁用元素。

`<input type="text" disabled>`
<input type="text" disabled>

**readonly**：使输入框只读。

`<input type="text" readonly>`
<input type="text" readonly>

**required**：指定输入字段为必填项。

`<input type="text" required>`
<input type="text" required>

**autoplay**（用于 \<audio> 和 \<video> 元素）：自动播放媒体。

`<video src="video.mp4" autoplay></video>`
<video src="video.mp4" autoplay></video>

**自定义属性**

HTML5 引入了 **data-\*** 属性，允许开发者自定义属性来存储额外的数据。

**data-\***：用于存储自定义数据，通常通过 JavaScript 访问。

`<div data-user-id="12345" data-role="admin">User Info</div>`
<div data-user-id="12345" data-role="admin">User Info</div>

**事件处理属性**

HTML 元素可以通过事件处理属性来响应特定的事件，如点击、鼠标悬停等。

**onclick**：当用户点击元素时触发。

`<button onclick="alert('Button clicked!')">Click Me</button>`
<button onclick="alert('Button clicked!')">Click Me</button>

**onmouseover**：当用户将鼠标悬停在元素上时触发。

`<div onmouseover="this.style.backgroundColor='yellow'">Hover over me</div>`
<div onmouseover="this.style.backgroundColor='yellow'">Hover over me</div>

**onchange**：当元素的值发生变化时触发。

`<input type="text" onchange="alert('Value changed!')">`
<input type="text" onchange="alert('Value changed!')">

更多标准属性说明： [HTML 标准属性参考手册](https://www.runoob.com/tags/ref-standardattributes.html).

## **HTML 标题**

在 HTML 文档中，标题很重要。

**HTML 标题**

标题（Heading）是通过 \<h1> - \<h6> 标签进行定义的。

\<h1> 定义最大的标题。 \<h6> 定义最小的标题。

**实例**

`<h1>这是一个标题。</h1> <h2>这是一个标题。</h2> <h3>这是一个标题。</h3>`
<h1>这是一个标题。</h1> <h2>这是一个标题。</h2> <h3>这是一个标题。</h3>

**注释:** 浏览器会自动地在标题的前后添加空行。

**标题很重要**

请确保将 HTML 标题 标签只用于标题。不要仅仅是为了生成**粗体**或**大号**的文本而使用标题。

搜索引擎使用标题为您的网页的结构和内容编制索引。

因为用户可以通过标题来快速浏览您的网页，所以用标题来呈现文档结构是很重要的。

应该将 h1 用作主标题（最重要的），其后是 h2（次重要的），再其次是 h3，以此类推。

**HTML 水平线**

\<hr> 标签在 HTML 页面中创建水平线。


hr 元素可用于分隔内容。

**实例**

`<p>这是一个段落。</p> <hr> <p>这是一个段落。</p> <hr> <p>这是一个段落。</p>`
<p>这是一个段落。</p> <hr> <p>这是一个段落。</p> <hr> <p>这是一个段落。</p>


**HTML 注释**

可以将注释插入 HTML 代码中，这样可以提高其可读性，使代码更易被人理解。浏览器会忽略注释，也不会显示它们。

注释写法如下:

**实例**

`<!-- 这是一个注释 -->`
<!-- 这是一个注释 -->

**注释:** 开始尖号之后需要紧跟一个叹号 **!** (英文标点符号)，结束尖号之前不需要。

**HTML 段落**

HTML 可以将文档分割为若干段落。

**HTML 段落**

段落是通过 \<p> 标签定义的。

**实例**

`<p>这是一个段落 </p> <p>这是另一个段落</p>`
<p>这是一个段落 </p> <p>这是另一个段落</p>

**注意:**浏览器会自动地在段落的前后添加空行。（\</p> 是块级元素）



**不要忘记结束标签**

即使忘了使用结束标签，大多数浏览器也会正确地将 HTML 显示出来：

**实例**

`<p>这是一个段落 <p>这是另一个段落`
<p>这是一个段落 <p>这是另一个段落

**注释:** 在未来的 HTML 版本中，不允许省略结束标签。

**HTML 折行**

如果您希望在不产生一个新段落的情况下进行换行（新行），请使用\<br> 标签：

**实例**

`<p>这个<br>段落<br>演示了分行的效果</p>`
<p>这个<br>段落<br>演示了分行的效果</p>

\<br /> 元素是一个空的 HTML 元素。由于关闭标签没有任何意义，因此它没有结束标签。

在逻辑上来讲等同于\<br>....\</br>（但是没有 **\</br>** 这种写法）

**HTML 输出- 使用提醒**

我们无法确定 HTML 被显示的确切效果。屏幕的大小，以及对窗口的调整都可能导致不同的结果。

对于 HTML，您无法通过在 HTML 代码中添加额外的空格或换行来改变输出的效果。

当显示页面时，浏览器会移除源代码中多余的空格和空行。所有连续的空格或空行都会被算作一个空格。需要注意的是，HTML 代码中的所有连续的空行（换行）也被显示为一个空格。

 

## HTML 文本格式化

```
<b>加粗文本</b><br><br>
<i>斜体文本</i><br><br>
<code>电脑自动输出</code><br><br>
这是 <sub> 下标</sub> 和 <sup> 上标</sup>
```

<b>加粗文本</b><br><br>
<i>斜体文本</i><br><br>
<code>电脑自动输出</code><br><br>
这是 <sub> 下标</sub> 和 <sup> 上标</sup>

 

HTML 格式化标签

HTML 使用标签 \<b>("bold") 与 \<i>("italic") 对输出的文本进行格式, 如：<b>粗体</b> or <i>斜体</i>

 

这些HTML标签被称为格式化标签

通常标签 \<strong> 替换加粗标签 \<b> 来使用, \<em> 替换 \<i>标签使用。



然而，这些标签的含义是不同的：


\<b> 与\<i> 定义粗体或斜体文本。

 

\<strong> 或者 \<em>意味着你要呈现的文本是重要的，所以要突出显示。现今所有主要浏览器都能渲染各种效果的字体。不过，未来浏览器可能会支持更好的渲染效果。

## **HTML 链接**

HTML 链接（Anchor）是网页之间跳转的核心部分。

HTML 使用链接与网络上的另一个文档相连。

HTML中的链接是一种用于在不同网页之间导航的元素。

链接通常用于将一个网页与另一个网页或资源（如文档、图像、音频文件等）相关联。

链接允许用户在浏览网页时单击文本或图像来跳转到其他位置，从而实现网页之间的互联。

HTML 链接 通过`<a>`标签创建，通常用于将用户从一个页面导航到另一个页面、从一个部分跳转到页面中的另一个部分、下载文件、打开电子邮件应用程序或执行 JavaScript 函数等。

**基本语法**

`<a href="URL">链接文本</a>`

- \<a> 标签：定义了一个超链接（anchor）。它是 HTML 中用来创建可点击链接的主要标签。
- href 属性：指定目标 URL，当点击链接时，浏览器将导航到此 URL。

以下实例演示来如何在 HTML 文档中创建链接：

**实例**
```
<a href="/index.html">本文本</a> 是一个指向本网站中的一个页面的链接。
</p>  <p><a href="https://www.microsoft.com/">本文本</a> 是一个指向万维网上的页面的链接。</p>
```
<a href="/index.html">本文本</a> 是一个指向本网站中的一个页面的链接。</p>  <p><a href="https://www.microsoft.com/">本文本</a> 是一个指向万维网上的页面的链接。</p>


**HTML 超链接（链接）**

HTML使用标签 **\<a>** 来设置超文本链接。

超链接可以是一个字，一个词，或者一组词，也可以是一幅图像，您可以点击这些内容来跳转到新的文档或者当前文档中的某个部分。

当您把鼠标指针移动到网页中的某个链接上时，箭头会变为一只小手。

在标签 **\<a>** 中使用了 **href** 属性来描述链接的地址。

默认情况下，链接将以以下形式出现在浏览器中：

- 一个未访问过的链接显示为蓝色字体并带有下划线。
- 访问过的链接显示为紫色并带有下划线。
- 点击链接时，链接显示为红色并带有下划线。

*注意：如果为这些超链接设置了 CSS 样式，展示样式会根据 CSS 的设定而显示。*

**HTML 链接属性**

href 属性描述了链接的目标。

**1、href：定义链接目标。**

这是超链接最重要的属性，用来指定链接的目的地，可以是另一个网页、文件、邮件、电话号码或 JavaScript。

**实例**

`<a href="https://www.example.com">访问 Example</a>`
<a href="https://www.example.com">访问 Example</a>

**2、target：定义链接的打开方式。**

- _blank: 在新窗口或新标签页中打开链接。
- _self: 在当前窗口或标签页中打开链接（默认）。
- _parent: 在父框架中打开链接。
- _top: 在整个窗口中打开链接，取消任何框架。

**实例**

`<a href="https://www.example.com" target="_blank" rel="noopener">新窗口打开 Example</a>`
<a href="https://www.example.com" target="_blank" rel="noopener">新窗口打开 Example</a>

**3、rel：定义链接与目标页面的关系。**

**nofollow**: 表示搜索引擎不应跟踪该链接，常用于外部链接。

**noopener** 和 **noreferrer**: 防止在新标签中打开链接时的安全问题，尤其是使用 **target="_blank"** 时。

- noopener: 防止新的浏览上下文（页面）访问window.opener属性和open方法。
- noreferrer: 不发送referer header（即不告诉目标网站你从哪里来的）。
- noopener noreferrer: 同时使用noopener和noreferrer。例子: `<a     href="https://www.example.com" rel="noopener     noreferrer">安全链接</a>`

**实例**

`<a href="https://www.example.com" target="_blank" rel="noopener noreferrer">安全链接</a>`
<a href="https://www.example.com" target="_blank" rel="noopener noreferrer">安全链接</a>

**4、download：提示浏览器下载链接目标而不是导航到该目标。**

如果指定了文件名，浏览器会提示下载并保存为指定文件名。

例如：

**实例**

`<a href="file.pdf" download="example.pdf">下载文件</a>`
<a href="file.pdf" download="example.pdf">下载文件</a>

**5、title：定义链接的额外信息，当鼠标悬停在链接上时显示的工具提示。**

**实例**

`<a href="https://www.example.com" title="访问 Example 网站">访问 Example</a>`
<a href="https://www.example.com" title="访问 Example 网站">访问 Example</a>

**6、id：用于链接锚点，通常在同一页面中跳转到某个特定位置。**

**实例**
```
<!-- 链接到页面中的某个部分 -->
<**a** href="#section1">跳转到第1部分</**a**>
<**div** id="section1">这是第1部分</**div**>
```

 <a href="#section1">跳转到第1部分</a>
 <div id="section1">这是第1部分</div>


**7、hreflang: 指定链接的目标URL的语言**

**实例**

`<a href="https://www.example.com/es" hreflang="es">访问西班牙语网站</a>`
<a href="https://www.example.com/es" hreflang="es">访问西班牙语网站</a>

**8、type: 指定链接资源的MIME类型**

**实例**

`<a href="style.css" type="text/css">样式表</a>`
<a href="style.css" type="text/css">样式表</a>

**9、class: 用于指定元素的类名（CSS中定义）**

**实例**

`<a href="https://www.example.com" class="external-link">外部链接</a>`
<a href="https://www.example.com" class="external-link">外部链接</a>

**10、style: 直接在元素上定义CSS样式**

**实例**

`<a href="https://www.example.com" style="color: red;">红色链接</a>`
<a href="https://www.example.com" style="color: red;">红色链接</a>

**空链接**

以下是常见的几种设置空链接的方法，以及它们之间的区别：

| **方法**                  | **作用**                   | **是否会跳转** | **场景适用性**               |
| ------------------------- | -------------------------- | -------------- | ---------------------------- |
| href="#"                  | 导航到页面顶部             | 是             | 占位符，捕获点击事件         |
| href="javascript:void(0)" | 阻止默认行为，不刷新页面   | 否             | 阻止跳转，配合 JS 使用       |
| href=""                   | 刷新当前页面               | 是             | 需要页面刷新时               |
| href="about:blank"        | 打开空白页面               | 是             | 新窗口打开空白页面           |
| role="button"             | 链接表现为按钮，无默认行为 | 否             | 配合 JS 实现按钮功能，无跳转 |



**基本的注意事项 - 有用的提示**

**注释：** 请始终将正斜杠添加到子文件夹。假如这样书写链接：`href="https://www.runoob.com/html"`，就会向服务器产生两次 HTTP 请求。这是因为服务器会添加正斜杠到这个地址，然后创建一个新的请求，就像这样：`href="https://www.runoob.com/html/"`。

## **HTML头部**

**HTML \<head> 元素**


\<head> 元素包含了所有的头部标签元素。在 \<head>元素中你可以插入脚本（scripts）, 样式文件（CSS），及各种meta信息。


可以添加在头部区域的元素标签为: \<title>, \<style>, \<meta>, \<link>, \<script>, \<noscript> 和 \<base>。



**HTML \<title> 元素**

\<title> 标签定义了不同文档的标题。

\<title> 在 HTML/XHTML 文档中是必需的。

\<title> 元素:


- 定义了浏览器工具栏的标题
- 当网页添加到收藏夹时，显示在收藏夹中的标题
- 显示在搜索引擎结果页面的标题

一个简单的 HTML 文档:

**实例**

```
<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>文档标题</title>
</head>
 
<body>
文档内容......
</body>
 
</html>
```
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>文档标题</title> </head> <body> 文档内容...... </body> </html>


**HTML <base> 元素**

\<base> 标签描述了基本的链接地址/链接目标，该标签作为HTML文档中所有的链接标签的默认链接:

**实例**


`<head> <base href="http://www.runoob.com/images/" target="_blank"> </head>`
<head> <base href="http://www.runoob.com/images/" target="_blank"> </head>


**HTML \<link> 元素**

\<link> 标签定义了文档与外部资源之间的关系。

\<link> 标签通常用于链接到样式表:

**实例**

`<head> <link rel="stylesheet" type="text/css" href="mystyle.css"> </head>`
<head> <link rel="stylesheet" type="text/css" href="mystyle.css"> </head>




**HTML <style> 元素**

\<style> 标签定义了HTML文档的样式文件引用地址.

在\<style> 元素中你也可以直接添加样式来渲染 HTML 文档:

**实例**

`<head> <style type="text/css"> body { background-color:yellow; } p { color:blue } </style> </head>`
<head> <style type="text/css"> body { background-color:yellow; } p { color:blue } </style> </head>




**HTML <meta> 元素**

meta标签描述了一些基本的元数据。

\<meta> 标签提供了元数据.元数据也不显示在页面上，但会被浏览器解析。

META 元素通常用于指定网页的描述，关键词，文件的最后修改时间，作者，和其他元数据。

元数据可以使用于浏览器（如何显示内容或重新加载页面），搜索引擎（关键词），或其他Web服务。

\<meta> 一般放置于 \<head> 区域

\<meta> 标签- 使用实例

为搜索引擎定义关键词:

`<meta name="keywords" content="HTML, CSS, XML, XHTML, JavaScript">`
<meta name="keywords" content="HTML, CSS, XML, XHTML, JavaScript">

为网页定义描述内容:

`<meta name="description" content="免费 Web & 编程 教程">`
<meta name="description" content="免费 Web & 编程 教程">

定义网页作者:

`<meta name="author" content="Runoob">`
<meta name="author" content="Runoob">

每30秒钟刷新当前页面:

`<meta http-equiv="refresh" content="30">`
<meta http-equiv="refresh" content="30">



**HTML \<script> 元素**

\<script>标签用于加载脚本文件，如： JavaScript。

\<script> 元素在以后的章节中会详细描述。





**HTML 图像- 图像标签（ \<img>）和源属性（Src）**

在 HTML 中，图像由\<img> 标签定义。

\<img> 是空标签，意思是说，它只包含属性，并且没有闭合标签。

要在页面上显示图像，你需要使用源属性（src）。src 指 "source"。源属性的值是图像的 URL 地址。

**定义图像的语法是：**

<img src="D:\文档\Obsidian Vault\note\url" alt="some_text">

URL 指存储图像的位置。如果名为 "pulpit.jpg" 的图像位于 `www.runoob.com` 的 images 目录中，那么其 URL 为 [http://www.runoob.com/images/pulpit.jpg](https://www.runoob.com/images/pulpit.jpg)。

浏览器将图像显示在文档中图像标签出现的地方。如果你将图像标签置于两个段落之间，那么浏览器会首先显示第一个段落，然后显示图片，最后显示第二段。



**HTML 图像- Alt属性**

alt 属性用来为图像定义一串预备的可替换的文本。

替换文本属性的值是用户定义的。

`<img src="D:\文档\Obsidian Vault\note\boat.gif" alt="Big Boat">`
<img src="D:\文档\Obsidian Vault\note\boat.gif" alt="Big Boat">

在浏览器无法载入图像时，替换文本属性告诉读者她们失去的信息。此时，浏览器将显示这个替代性的文本而不是图像。为页面上的图像都加上替换文本属性是个好习惯，这样有助于更好的显示信息，并且对于那些使用纯文本浏览器的人来说是非常有用的。



**HTML 图像- 设置图像的高度与宽度**

height（高度） 与 width（宽度）属性用于设置图像的高度与宽度。

属性值默认单位为像素:

`<img src="D:\文档\Obsidian Vault\note\pulpit.jpg" alt="Pulpit rock" width="304" height="228">`
<img src="D:\文档\Obsidian Vault\note\pulpit.jpg" alt="Pulpit rock" width="304" height="228">

**提示:** 指定图像的高度和宽度是一个很好的习惯。如果图像指定了高度宽度，页面加载时就会保留指定的尺寸。如果没有指定图片的大小，加载页面时有可能会破坏HTML页面的整体布局。



```
<map name="planetmap">
  <area shape="rect" coords="0,0,82,126" alt="Sun" href="sun.htm">
  <area shape="circle" coords="90,58,3" alt="Mercury" href="mercur.htm">
  <area shape="circle" coords="124,58,8" alt="Venus" href="venus.htm">
</map>
```
<map name="planetmap">
  <area shape="rect" coords="0,0,82,126" alt="Sun" href="sun.htm">
  <area shape="circle" coords="90,58,3" alt="Mercury" href="mercur.htm">
  <area shape="circle" coords="124,58,8" alt="Venus" href="venus.htm">
</map>
该段代码中的shape指的是点击区域的形状，coords指的应该是链接区域在图片中的坐标（像素为单位）



## HTML 表格

由`<table>`标签来定义。

HTML 表格是一种用于展示结构化数据的标记语言元素。

每个表格均有若干行（由 **\<tr>** 标签定义），每行被分割为若干单元格（由 **\<td>** 标签定义），表格可以包含标题行（**\<th>**）用于定义列的标题。

- **tr**：tr 是 table row 的缩写，表示表格的一行。
- **td**：td 是 table data 的缩写，表示表格的数据单元格。
- **th**：th 是 table header的缩写，表示表格的表头单元格。

数据单元格可以包含文本、图片、列表、段落、表单、水平线、表格等等。

HTML 表格生成器：https://www.jyshare.com/front-end/7688/。

**以下是一个简单的 HTML 表格实例:**

**实例**
```
<table>   <thead>     <tr>       <th>列标题1</th>       <th>列标题2</th>       <th>列标题3</th>     </tr>   </thead>   <tbody>     <tr>       <td>行1，列1</td>       <td>行1，列2</td>       <td>行1，列3</td>     </tr>     <tr>       <td>行2，列1</td>       <td>行2，列2</td>       <td>行2，列3</td>     </tr>   </tbody> </table>
```

<table>   <thead>     <tr>       <th>列标题1</th>       <th>列标题2</th>       <th>列标题3</th>     </tr>   </thead>   <tbody>     <tr>       <td>行1，列1</td>       <td>行1，列2</td>       <td>行1，列3</td>     </tr>     <tr>       <td>行2，列1</td>       <td>行2，列2</td>       <td>行2，列3</td>     </tr>   </tbody> </table>

以上的表格实例代码中，\<table> 元素表示整个表格，它包含两个主要部分：\<thead> 和 \<tbody>。

- **\<thead > 用于定义表格的标题部分:** 在 \<thead > 中，使用 \<th > 元素定义列的标题，以上实例中列标题分别为"列标题1"，"列标题2"和"列标题3"。
- **\<tbody > 用于定义表格的主体部分:** 在 \<tbody > 中，使用 \<tr > 元素定义行，并在每行中使用 \<td > 元素定义单元格数据，以上实例中有两行数据，每行包含三个单元格。

通过使用 \<th > 元素定义列标题，可以使其在表格中以粗体显示，与普通单元格区分开来。

HTML 表格还可以具有其他部分，如 \<tfoot > （表格页脚）和 \<caption > （表格标题），\<tfoot > 可用于在表格的底部定义摘要、统计信息等内容。 \<caption > 可用于为整个表格定义标题。

HTML 表格还支持合并单元格和跨行/跨列的操作，以及其他样式和属性的应用，以满足各种需求。

我们也可以使用 CSS 来进一步自定义表格的样式和外观。

 ```
 <!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>菜鸟教程(runoob.com)</title> 
</head>
<body>

<h4>单元格跨两列:</h4>
<table border="1">
<tr>
  <th>Name</th>
  <th colspan="2">Telephone</th>
</tr>
<tr>
  <td>Bill Gates</td>
  <td>555 77 854</td>
  <td>555 77 855</td>
</tr>
</table>

<h4>单元格跨两行:</h4>
<table border="1">
<tr>
  <th>First Name:</th>
  <td>Bill Gates</td>
</tr>
<tr>
  <th rowspan="2">Telephone:</th>
  <td>555 77 854</td>
</tr>
<tr>
  <td>555 77 855</td>
</tr>
</table>

</body>
</html>
 ```
<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>菜鸟教程(runoob.com)</title> 
</head>
<body>

<h4>单元格跨两列:</h4>
<table border="1">
<tr>
  <th>Name</th>
  <th colspan="2">Telephone</th>
</tr>
<tr>
  <td>Bill Gates</td>
  <td>555 77 854</td>
  <td>555 77 855</td>
</tr>
</table>

<h4>单元格跨两行:</h4>
<table border="1">
<tr>
  <th>First Name:</th>
  <td>Bill Gates</td>
</tr>
<tr>
  <th rowspan="2">Telephone:</th>
  <td>555 77 854</td>
</tr>
<tr>
  <td>555 77 855</td>
</tr>
</table>

</body>
</html>

**HTML 表格和边框属性**

如果不定义边框属性，表格将不显示边框。有时这很有用，但是大多数时候，我们希望显示边框。

使用边框属性来显示一个带有边框的表格：

`<table border="1"> <tr> <td>Row 1, cell 1</td> <td>Row 1, cell 2</td> </tr> </table>`
<table border="1"> <tr> <td>Row 1, cell 1</td> <td>Row 1, cell 2</td> </tr> </table>


表格三要素 **table、tr、td** 缺一不可。

\<table> 标签常用属性：

```
border="1"   表格边框的宽度
bordercolor="#fff"   表格边框的颜色
cellspacing="5"   单元格之间的间距
width="500"   表格的总宽度
height="100"   表格的总高度
align="right"   表格整体对齐方式    (参数有  left、center、right)
bgcolor="#fff"   表格整体的背景色
```

\<tr> 标签的常用属性:

```
bgcolor="#fff"    行的颜色
align="right"    行内文字的水平对齐方式    (参数有left、center、right)
valign="top"     行内文字的垂直对齐方式    (参数有top、middle、bottom)
```

\<td>、\<th> 标签的常用属性:

```
width="500"    单元格的宽度，设置后对当前一列的单元格都有影响
height="100"   单元格的高度，设置后对当前一行的单元格都有影响
bgcolor="fff"  单元格的背景色
align="right"  单元格文字的水平对齐方式    (参数left、center、right)
rowspan="3"    合并垂直方向单元格
colspan="3"    合并水平方向单元格
valign="top"   单元格文字的垂直对齐方式    (参数middle、bottom、top)
```

colspan：合并水平单元格，即将原来两列colunm的单元格合并成一个。

rowspan：合并垂直单元格，即将原来两行row的单元格合成一个，


**HTML 表格表头**

表格的表头使用 \<th> 标签进行定义。

多数浏览器会把表头显示为粗体居中的文本：

## **HTML列表**

**HTML无序列表**

无序列表是一个项目的列表，此列项目粗体圆点（典型的小黑圆圈）进行标记。

无序列表使用 \<ul> 标签
```
<ul>
 <li>Coffee</li>
 <li>Milk</li>
 </ul>
```
<ul>
 <li>Coffee</li>
 <li>Milk</li>
 </ul>


**HTML 有序列表**

同样，有序列表也是一列项目，列表项目使用数字进行标记。 有序列表始于 \<ol> 标签。每个列表项始于 \<li> 标签。

列表项使用数字来标记。

```
<ol>
 <li>Coffee</li>
 <li>Milk</li>
 </ol>
```
<ol>
 <li>Coffee</li>
 <li>Milk</li>
 </ol>



**HTML 自定义列表**

自定义列表不仅仅是一列项目，而是项目及其注释的组合。

自定义列表以 \<dl> 标签开始。每个自定义列表项以 \<dt> 开始。每个自定义列表项的描述定义以 \<dd> 开始。
```
<dl>
 <dt>Coffee</dt>
 <dd>- black hot drink</dd>
 <dt>Milk</dt>
 <dd>- white cold drink</dd>
 </dl>
```
<dl>
 <dt>Coffee</dt>
 <dd>- black hot drink</dd>
 <dt>Milk</dt>
 <dd>- white cold drink</dd>
 </dl>





## **HTML区块元素**

HTML 可以通过 \<div> 和 \<span>将元素组合起来。

大多数 HTML 元素被定义为**块级元素**或**内联元素**。

块级元素在浏览器显示时，通常会以新行来开始（和结束）。

实例: \<h1>, \<p>, \<ul>, \<table>



**HTML 内联元素**

内联元素在显示时通常不会以新行开始。

实例: \<b>, \<td>, \<a>, \<img>



**HTML \<div> 元素**

HTML \<div> 元素是块级元素，它可用于组合其他 HTML 元素的容器。

\<div> 元素没有特定的含义。除此之外，由于它属于块级元素，浏览器会在其前后显示折行。

如果与 CSS 一同使用，\<div> 元素可用于对大的内容块设置样式属性。

\<div> 元素的另一个常见的用途是文档布局。它取代了使用表格定义布局的老式方法。使用 \<table> 元素进行文档布局不是表格的正确用法。\<table> 元素的作用是显示表格化的数据。



**HTML \<span> 元素**

HTML \<span> 元素是内联元素，可用作文本的容器

\<span> 元素也没有特定的含义。

当与 CSS 一同使用时，\<span> 元素可用于为部分文本设置样式属性。

 **块级元素 vs. 行内元素：**

- \<div> 是块级元素，它独占一行，可以设置宽度、高度以及边距等样式属性。它适合用于创建页面的大块结构，例如页面的主体区域、容器、布局等。
- \<span> 是行内元素，它不会独占一行，宽度默认由其内容决定。它适合用于对文本或其他行内元素进行样式化、标记或包裹。

**默认样式和布局：**

- \<div> 元素的默认样式为块级显示，会以块的形式占据可用空间。
- \<span> 元素的默认样式为行内显示，它不会独占一行，只占据其内容的宽度。

**嵌套关系：**

- \<div> 可以容纳其他块级元素和行内元素，包括其他的 \<div> 和 \<span> 元素。
- \<span> 通常被用来包裹文本或其他行内元素，比如用来设置特定文本的样式。

总之，\<div> 用于创建页面结构和布局，而 \<span> 用于对文本或行内元素进行样式化或包裹。它们在页面设计和样式设置中有不同的用途和作用。

HTML布局——使用\<div>
```
<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>菜鸟教程(runoob.com)</title> 
</head>
<body>

<div id="container" style="width:500px">

<div id="header" style="background-color:#FFA500;">
<h1 style="margin-bottom:0;">主要的网页标题</h1></div>

<div id="menu" style="background-color:#FFD700;height:200px;width:100px;float:left;">
<b>菜单</b><br>
HTML<br>
CSS<br>
JavaScript</div>

<div id="content" style="background-color:#EEEEEE;height:200px;width:400px;float:left;">
内容在这里</div>

<div id="footer" style="background-color:#FFA500;clear:both;text-align:center;">
版权 © runoob.com</div>

</div>

</body>
</html>
```
<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>菜鸟教程(runoob.com)</title> 
</head>
<body>

<div id="container" style="width:500px">

<div id="header" style="background-color:#FFA500;">
<h1 style="margin-bottom:0;">主要的网页标题</h1></div>

<div id="menu" style="background-color:#FFD700;height:200px;width:100px;float:left;">
<b>菜单</b><br>
HTML<br>
CSS<br>
JavaScript</div>

<div id="content" style="background-color:#EEEEEE;height:200px;width:400px;float:left;">
内容在这里</div>

<div id="footer" style="background-color:#FFA500;clear:both;text-align:center;">
版权 © runoob.com</div>

## **HTML 表单和输入**


HTML 表单用于收集用户的输入信息。

HTML 表单表示文档中的一个区域，此区域包含交互控件，将用户收集到的信息发送到 Web 服务器。

HTML 表单通常包含各种输入字段、复选框、单选按钮、下拉列表等元素。

以下是一个简单的HTML表单的例子：

- \<form> 元素用于创建表单，action 属性定义了表单数据提交的目标 URL，method 属性定义了提交数据的 HTTP 方法（这里使用的是 "post"）。
- \<label> 元素用于为表单元素添加标签，提高可访问性。
- \<input> 元素是最常用的表单元素之一，它可以创建文本输入框、密码框、单选按钮、复选框等。type 属性定义了输入框的类型，id 属性用于关联 `<label>` 元素，name 属性用于标识表单字段。
- \<select> 元素用于创建下拉列表，而 `<option>` 元素用于定义下拉列表中的选项。

以下实例创建了一个表单，包含两个输入框：
```
<form action="">
First name: <input type="text" name="firstname"><br>
Last name: <input type="text" name="lastname">
</form>
```
<form action="">
First name: <input type="text" name="firstname"><br>
Last name: <input type="text" name="lastname">
</form>

 以下实例创建了一个表单，包含一个普通输入框和一个密码输入框：
```
<form action="">
Username: <input type="text" name="user"><br>
Password: <input type="password" name="password">
</form>
```
<form action="">
Username: <input type="text" name="user"><br>
Password: <input type="password" name="password">
</form>

表单是一个包含表单元素的区域。

表单元素是允许用户在表单中输入内容，比如：文本域（textarea）、下拉列表（select）、单选框（radio-buttons）、复选框（checkbox） 等等。

我们可以使用 **`<form>`** 标签来创建表单:

**实例**
```
<**form**>

.

 input 元素

 .

 </**form**>
```

**文本域（Text Fields）**

文本域通过 **\<input type="text">** 标签来设定，当用户要在表单中键入字母、数字等内容时，就会用到文本域。

**注意:**表单本身并不可见。同时，在大多数浏览器中，文本域的默认宽度是 20 个字符。

**密码字段**

密码字段通过标签 **\<input type="password">** 来定义:

**注意：**密码字段字符不会明文显示，而是以星号 **\*** 或圆点 **.** 替代。

**单选按钮（Radio Buttons）**

**\<input type="radio">** 标签定义了表单的单选框选项:
```
<form action="">
<input type="radio" name="sex" value="male">男<br>
<input type="radio" name="sex" value="female">女
</form>
```
<form action="">
<input type="radio" name="sex" value="male">男<br>
<input type="radio" name="sex" value="female">女
</form>


**复选框（Checkboxes）**

**\<input type="checkbox">** 定义了复选框。

复选框可以选取一个或多个选项：

**实例**
```
<form>
<input type="checkbox" name="vehicle[]" value="Bike">我喜欢自行车<br>
<input type="checkbox" name="vehicle[]" value="Car">我喜欢小汽车
</form>
```
<form>
<input type="checkbox" name="vehicle[]" value="Bike">我喜欢自行车<br>
<input type="checkbox" name="vehicle[]" value="Car">我喜欢小汽车
</form>

**提交按钮(Submit)**

**\<input type="submit">** 定义了提交按钮。

当用户单击确认按钮时，表单的内容会被传送到服务器。表单的动作属性 **action** 定义了服务端的文件名。

**action** 属性会对接收到的用户输入数据进行相关的处理:

**实例**
```
<form name="input" action="html_form_action.php" method="get">
Username: <input type="text" name="user">
<input type="submit" value="Submit">
</form>
```
<form name="input" action="html_form_action.php" method="get">
Username: <input type="text" name="user">
<input type="submit" value="Submit">
</form>

假如您在上面的文本框内键入几个字母，然后点击确认按钮，那么输入数据会传送到 **html_form_action.php** 文件，该页面将显示出输入的结果。

以上实例中有一个 method 属性，它用于定义表单数据的提交方式，可以是以下值：

- **post**：指的是 HTTP POST 方法，表单数据会包含在表单体内然后发送给服务器，用于提交敏感数据，如用户名与密码等。
- **get**：默认值，指的是 HTTP GET 方法，表单数据会附加在 **action** 属性的 URL 中，并以 **?**作为分隔符，一般用于不敏感信息，如分页等。例如：`https://www.runoob.com/?page=1`，这里的     page=1 就是 get 方法提交的数据。


```
<!-- 以下表单使用 GET 请求发送数据到当前的 URL，method 默认为 GET。 -->

<form>
  <label>Name:
    <input name="submitted-name" autocomplete="name">
  </label>
  <button>Save</button>
</form>

<!-- 以下表单使用 POST 请求发送数据到当前的 URL。 -->
<form method="post">
  <label>Name:
    <input name="submitted-name" autocomplete="name">
  </label>
  <button>Save</button>
</form>
<!-- 表单使用 fieldset, legend, 和 label 标签 -->

<form method="post">
  <fieldset>
    <legend>Title</legend>
    <label><input type="radio" name="radio"> Select me</label>
  </fieldset>
</form>
```

**\<input>标签**

\<input> 标签规定了用户可以在其中输入数据的输入字段。

\<input> 元素在 \<form> 元素中使用，用来声明允许用户输入数据的 input 控件。

输入字段可通过多种方式改变，取决于 type 属性。

**注意:** \<input> 元素是空的,它只包含标签属性。

**提示:** 你可以使用 \<label>元素来定义 \<input> 元素的标注。


 **\<button> 标签定义一个按钮。**

在 \<button> 元素内部，您可以放置内容，比如文本或图像。这是该元素与使用 \<input> 元素创建的按钮之间的不同之处。

**提示：**请始终为 \<button> 元素规定 type 属性。不同的浏览器对 \<button> 元素的 type 属性使用不同的默认值。

**注释：**如果在 HTML 表单中使用 \<button> 元素，不同的浏览器可能会提交不同的按钮值。请使用\<input> 在 HTML 表单中创建按钮。

**\<label>标签定义及使用说明**

\<label> 标签为 input 元素定义标注（标记）。

label 元素不会向用户呈现任何特殊效果。不过，它为鼠标用户改进了可用性。如果您在 label 元素内点击文本，就会触发此控件。就是说，当用户选择该标签时，浏览器就会自动将焦点转到和标签相关的表单控件上。

\<label> 标签的 for 属性应当与相关元素的 id 属性相同。

**定义和用法**

for 属性规定 label 绑定的表单元素。

**提示:**"for" 属性可把 label 绑定到另外一个元素。请把 "for" 属性的值设置为相关元素的 id 属性的值。



表单中的单选按钮可以设置以下几个属性：value、name、checked

-  value：提交数据到服务器的值（后台程序PHP使用）
-  name：为控件命名，以备后台程序 ASP、PHP 使用
-  checked：当设置 checked="checked" 时，该选项被默认选中
```
<form name="input">
<p>你生活在哪个国家？</p>
<input type="radio" name="country" value="China" checked="checked">中国<br />
<input type="radio" name="country" value="the USA">美国
</form>
```
<form name="input">
<p>你生活在哪个国家？</p>
<input type="radio" name="country" value="China" checked="checked">中国<br />
<input type="radio" name="country" value="the USA">美国
</form>


**注意：**同一组的单选按钮，name 取值一定要一致，比如上面例子为同一个名称“country”，这样同一组的单选按钮才可以起到单选的作用。

## HTML框架

**iframe语法:**

`<iframe src="URL"></iframe>`
<iframe src="URL"></iframe>

该URL指向不同的网页。

**frame - 设置高度与宽度**

height 和 width 属性用来定义iframe标签的高度与宽度。

属性默认以像素为单位, 但是你可以指定其按比例显示 (如："80%")。

**实例**

`<iframe src="demo_iframe.htm" width="200" height="200"></iframe>`
<iframe src="demo_iframe.htm" width="200" height="200"></iframe>

**iframe - 移除边框**

frameborder 属性用于定义iframe表示是否显示边框。

设置属性值为 "0" 移除iframe的边框:
`<iframe src="demo_iframe.htm" frameborder="0"></iframe>`
<iframe src="demo_iframe.htm" frameborder="0"></iframe>

**使用 iframe 来显示目标链接页面**

iframe 可以显示一个目标链接的页面

目标链接的属性必须使用 iframe 的属性，如下实例:
```
<iframe src="demo_iframe.htm" name="iframe_a"></iframe>
<p><a href="https://www.runoob.com" target="iframe_a" rel="noopener">RUNOOB.COM</a></p>
```
<iframe src="demo_iframe.htm" name="iframe_a"></iframe>
<p><a href="https://www.runoob.com" target="iframe_a" rel="noopener">RUNOOB.COM</a></p>

## **颜色值**

HTML 颜色由一个十六进制符号来定义，这个符号由红色、绿色和蓝色的值组成（RGB）。

每种颜色的最小值是0（十六进制：#00）。最大值是255（十六进制：#FF）。

RGBA 的意思是（Red-Green-Blue-Alpha）它是在 RGB 上扩展包括了 **“alpha”** 通道，运行对颜色值设置透明度。

```
div {
background:rgba(255,0,0,0.5);
}
```

相对于使用 rgb(255,255,0)，使用 rgba(255,255,0,0.5) 可以实现设置颜色透明度的功能，这里的 0.5 表示透明度，范围 0~1，0 表示全透明。

**目前所有浏览器都支持以下颜色名。**

141个颜色名称是在HTML和CSS颜色规范定义的（17标准颜色，再加124）。下表列出了所有颜色的值，包括十六进制值。

 **提示:** 17标准颜色：黑色，蓝色，水，紫红色，灰色，绿色，石灰，栗色，海军，橄榄，橙，紫，红，白，银，蓝绿色，黄色。点击其中一个颜色名称（或一个十六进制值）就可以查看与不同文字颜色搭配的背景颜色。

**HTML 颜色值**

颜色由红(R)、绿(G)、蓝(B)组成。

**颜色值**

颜色值由十六进制来表示红、绿、蓝（RGB）。

每个颜色的最低值为 0(十六进制为 00)，最高值为 255(十六进制为FF)。

十六进制值的写法为 # 号后跟三个或六个十六进制字符。

三位数表示法为：#RGB，转换为6位数表示为：#RRGGBB。

**颜色实例**

<table>
  <thead>
    <tr>
      <th>颜色</th>
      <th>3位十六进制颜色值</th>
      <th>6位十六进制颜色值</th>
      <th>RGB</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>黑色</td>
      <td>#000</td>
      <td>#000000</td>
      <td>rgb(0,0,0)</td>
    </tr>
    <!-- 在这里可以继续添加其他颜色行，例如红色、蓝色等 -->
  </tbody>
</table>

**HTML 脚本**

JavaScript 使 HTML 页面具有更强的动态和交互性。

**HTML \<script> 标签**

\<script> 标签用于定义客户端脚本，比如 JavaScript。

\<script> 元素既可包含脚本语句，也可通过 src 属性指向外部脚本文件。

JavaScript 最常用于图片操作、表单验证以及内容动态更新。

下面的脚本会向浏览器输出"Hello World!"：
```
<script>
document.write("Hello World!");
</script>
```
<script>
document.write("Hello World!");
</script>

**HTML\<noscript> 标签**

\<noscript> 标签提供无法使用脚本时的替代内容，比方在浏览器禁用脚本时，或浏览器不支持客户端脚本时。

\<noscript>元素可包含普通 HTML 页面的 body 元素中能够找到的所有元素。

只有在浏览器不支持脚本或者禁用脚本时，才会显示 \<noscript> 元素中的内容：

**实例**

```
<script>
document.write("Hello World!")
</script>
<noscript>抱歉，你的浏览器不支持 JavaScript!</noscript>
```
<script>
document.write("Hello World!")
</script>
<noscript>抱歉，你的浏览器不支持 JavaScript!</noscript>


## **HTML 字符实体**

HTML 中的预留字符必须被替换为字符实体。

一些在键盘上找不到的字符也可以使用字符实体来替换。

**HTML 实体**

在 HTML 中，某些字符是预留的。

在 HTML 中不能使用小于号（<）和大于号（>），这是因为浏览器会误认为它们是标签。



如果希望正确地显示预留字符，我们必须在 HTML 源代码中使用字符实体（character entities）。 字符实体类似这样：

&*entity_name*;

或

&#*entity_number*;



如需显示小于号，我们必须这样写：**&lt** 或 **&#60** 或 **&#060**

**提示：** 使用实体名而不是数字的好处是，名称易于记忆。不过坏处是，浏览器也许并不支持所有实体名称（对实体数字的支持却很好）

**不间断空格(Non-breaking Space)**

HTML 中的常用字符实体是不间断空格( \&nbsp;)。

浏览器总是会截短 HTML 页面中的空格。如果您在文本中写 10 个空格，在显示该页面之前，浏览器会删除它们中的 9 个。如需在页面中增加空Uniform Resource Locators格的数量，您需要使用 \&nbsp; 字符实体。

   实体名称对大小写敏感！  

## URL - 统一资源定位器Uniform Resource Locators

Web浏览器通过URL从Web服务器请求页面。

当您点击 HTML 页面中的某个链接时，对应的 \<a> 标签指向万维网上的一个地址。

一个统一资源定位器(URL) 用于定位万维网上的文档。

一个网页地址实例: `http://www.runoob.com/html/html-tutorial.html` 语法规则:

**scheme://host.domain:port/path/filename**

说明:

- scheme - 定义因特网服务的类型。最常见的类型是 http
- host - 定义域主机（http 的默认主机是 www）
- domain - 定义因特网域名，比如 runoob.com
- port - 定义主机上的端口号（http 的默认端口号是 80）
- path - 定义服务器上的路径（如果省略，则文档必须位于网站的根目录中）。
- filename - 定义文档/资源的名



**常见的 URL Scheme**

以下是一些URL scheme：

| **Scheme** | **访问**           | **用于...**                         |
| ---------- | ------------------ | ----------------------------------- |
| http(80)   | 超文本传输协议     | 以 http:// 开头的普通网页。不加密。 |
| https(433) | 安全超文本传输协议 | 安全网页，加密所有信息交换。        |
| ftp(21)    | 文件传输协议       | 用于将文件下载或上传至网站。        |
| file       |                    | 您计算机上的文件。                  |

**URL 字符编码**

URL 只能使用 [ASCII 字符集](https://www.runoob.com/tags/html-ascii.html).

来通过因特网进行发送。由于 URL 常常会包含 ASCII 集合之外的字符，URL 必须转换为有效的 ASCII 格式。

URL 编码使用 "%" 其后跟随两位的十六进制数来替换非 ASCII 字符。

URL 不能包含空格。URL 编码通常使用 + 来替换空格。

 

## 标记语言，脚本语言和编译型语言

标记语言

标记语言，是一种将文本（Text ）以及文本相关的其他信息结合起来，展现出关于文档结构和数据处理细节的电脑文字编码。与文本相关的其他信息（包括例如文本的结构和表示信息等）与原来的文本结合在一起，但是使用标记（markup）进行标识。

> 如：HTML、XML

脚本语言

脚本语言是为了缩短传统的编写-编译-链接-运行（edit-compile-link-run）过程而创建的计算机编程语言。它的命名起源于一个脚本“screenplay”，每次运行都会使对话框 逐字重复。早期的脚本语言经常被称为批量处理语言或工作控制语言。

一个脚本通常是解释运行而非编译。脚本语言通常都有简单、易学、易用的特性，目的就是希望能让程序员快速完成程序的编写工作。

> 如：JavaScript、VBScript、PHP

编译型语言

编译型语言：程序在执行之前需要一个专门的编译过程，把程序编译成 为机器语言的文件，运行时不需要重新翻译，直接使用编译的结果就行了。程序执行效率高，依赖编译器，跨平台性差些

> 如 C、C++

## 语义化标签

**语义化标签：让 HTML 更“聪明”**

在现代网页开发中，语义化（Semantic HTML）越来越重要。它意味着你使用的标签不仅要能显示内容，还要表达内容的含义。

与传统的`<div>`和`<span>`等无意义标签不同，语义化标签本身就具有明确的语义，比如`<header>`标签一看就知道是用于定义文档的头部区域，`<nav>`标签则用于表示导航链接的部分。

语义化标签布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>三层表格布局 · 第一行一个 · 第二行三格 · 第三行一个</title>
    <!-- 完全无CSS，仅靠表格边框展示结构 -->
</head>
<body>
    <!-- 
        纯表格： 
        第一行 → 一个单元格 (header)
        第二行 → 三个单元格 (left aside | main | right aside)
        第三行 → 一个单元格 (footer)
    -->
    <table border="1" cellspacing="0" cellpadding="12" align="center" style="font-family: monospace;">
          <!-- 第1行：一个单元格 (跨三列实际上就是占满整行，但border=1会自动合并外观) 
         但为了语义清楚，直接用一个td，隐式占据所有列宽度(表格会自动扩展) 
    -->
    <tr>
        <td colspan="3" align="center" style="font-size: 1.1rem;">
            <strong> header</strong>
        </td>
    </tr>
<!-- 第2行：三个单元格 (左侧 aside · 中部 main · 右侧 aside) -->
<tr>
    <td align="center" valign="middle" width="180">
        <strong> aside</strong><br>
        <span style="font-weight: normal;"></span>
    </td>
    <td align="center" valign="middle" width="240">
        <strong>main</strong><br>
        <span style="font-weight: normal;"></span>
    </td>
    <td align="center" valign="middle" width="180">
        <strong>aside</strong><br>
        <span style="font-weight: normal;"></span>
    </td>
</tr>
<!-- 第3行：一个单元格 (footer) -->
<tr>
    <td colspan="3" align="center" style="font-size: 1.1rem;">
        <strong>footer</strong>
    </td>
</tr>
    </table>
    </body>
</html>

**1. 提升代码可读性和可维护性：** 语义化标签让 HTML 结构更加清晰，开发者能够快速理解各个部分的功能和作用，便于团队协作和后续代码的修改与维护。

**2. 有利于搜索引擎优化（SEO）：** 搜索引擎的爬虫在解析网页时，能够通过语义化标签更准确地理解网页内容的结构和主题，从而提高网页在搜索结果中的排名。

**3. 改善用户体验：** 对于使用屏幕阅读器等辅助技术的用户来说，语义化标签能够帮助他们更好地理解网页内容的组织和逻辑，提升网页的可访问性。

最常用的语义化标签如下：

### 页面结构标签

- **`<header>`：** 定义页面或章节的头部，通常包含导航栏、标题或 Logo。
  - 可嵌套在`<article>`或`<section>`内部，此时表示 “该章节的头部”（如一篇文章的标题 + 作者信息）；
  - 一个页面中可存在多个`<header>`（页面级 1 个 + 章节级多个），需区分层级（页面级 vs 章节级）。
- **`<nav>`：** 定义导航链接区域，如主导航菜单。
  - 仅用于 “重要的导航链接集合”（如主导航、面包屑导航），次要零散链接无需用`<nav>`，避免语义泛化；
  - 一个页面可包含多个`<nav>`（如顶部主导航 + 底部辅助导航），但每个`<nav>`内的链接需逻辑一致（同类型导航）。
- **`<main>`：** 定义文档的主要内容，每个页面只能有一个`<main>`标签，且不应被包含在任何语义分区标签（如`<header>`、`<article>`等）内（可以被`<div>`等非语义化标签包含）。
  - 它应作为 `<body>` 的直接子元素或与这些分区标签同级，用于明确标识页面的核心内容区域；
  - 仅包含 “当前页面独有的核心内容”（如文章正文、商品详情），不包含跨页面重复内容（如导航栏、版权信息）；
  - 辅助技术（如屏幕阅读器）可通过`<main>`快速定位核心内容，提升可访问性。
- **`<footer>`：** 定义页面或章节的底部，通常包含版权信息、联系方式等。
  - 与`<header>`对应，可嵌套在`<article>`或`<section>`内，作为 “该章节的底部”（如一篇文章的点赞数、分享按钮）；
  - 页面级`<footer>`多包含全站通用信息（版权、备案号），章节级`<footer>`包含该章节特有的辅助信息。
- **`<aside>`：** 定义与主要内容间接相关的内容，如侧边栏、广告等。
  - 语义核心是 “辅助性”，而非 “位置”（不要仅因内容在侧边就用`<aside>`）；
  - 嵌套场景差异：
    - 若在`<article>`内：表示与该文章直接相关的辅助内容（如文章注释、术语解释）；
    - 若在页面级（与`<main>`同级）：表示与整个页面相关的辅助内容（如全站侧边栏）。

### 内容分区标签

- **`<article>`：** 定义独立的、可复用的内容，如博客文章、评论、论坛帖子等。
  - “独立性” 判断标准：内容单独抽出后依然完整且有意义（如一篇文章、一条独立评论）；
  - 内部可包含自己的`<header>`、`<footer>`或`<section>`（作为独立内容单元），例如：一篇`<article>`中可用`<section>`划分 “引言”“正文” 等部分。
- **`<section>`：** 定义文档中的一个章节或主题块，通常包含一个标题。
  - 必须围绕 “单一主题” 组织内容，建议包含一个`<h1>`-`<h6>`标题；
  - 避免作为普通容器替代`<div>`，仅当内容存在明确主题划分时使用（如 “用户评价区”“活动规则说明” 等有独立主题的区块）。
  
## id、class和label的区别

| 特性         | `id` （身份证号）                                            | `class` （班级/组名）                              | `label` （姓名牌/标签）                                      |
| :----------- | :----------------------------------------------------------- | :------------------------------------------------- | :----------------------------------------------------------- |
| **唯一性**   | **唯一**。一个页面只能有一个元素叫这个名字。                 | **不唯一**。无数个元素可以共用同一个类名。         | 用于**关联**。用来绑定文字和表单元素。                       |
| **主要用途** | 1. JavaScript 抓取特定元素。<br> 2. 页面锚点链接。<br> 3. CSS 特定样式（优先级高）。 | 1. CSS 批量设置样式。<br> 2. JavaScript 批量操作。 | 1. 提升用户体验（点击文字就能选中复选框/输入框）。<br> 2. 提升屏幕阅读器可访问性。 |
| **命名风格** | 必须是唯一的。                                               | 可以重复。                                         | 通过 `for` 属性指向某个元素的 `id`。                         |
| **谁在用**   | 给 **HTML元素** 用的。                                       | 给 **HTML元素** 用的。                             | 给 **文字标签** 用的（单独标签)                              |





- **`id`**：你是**唯一**的。（通常给JavaScript用的钩子）
- **`class`**：你属于**这一类**。（通常给CSS样式用的）
- **`label`**：我来**解释**这个输入框是干什么的。（提高用户体验和可访问性）
```
<!-- label 的文字让输入框更好用，class 让样式统一，id 让 JS 能找到它 -->
<label for="email">邮箱地址：</label>
<input 
  type="email" 
  id="email"                 <!-- id：供 label 和 JS 使用，必须唯一 -->
  class="input-field"        <!-- class：让所有输入框样式统一 -->
  placeholder="请输入邮箱"
>

<label for="phone">手机号码：</label>
<input 
  type="tel" 
  id="phone"                 <!-- id 是另一个，不能叫 email 了 -->
  class="input-field"        <!-- class 可以重复，所以和上面的样式一样 -->
  placeholder="请输入手机号"
>

<!-- 这里的 id 用于 JS 抓取 -->
<button id="submitBtn" class="btn-primary">提交</button>
```


<!-- label 的文字让输入框更好用，class 让样式统一，id 让 JS 能找到它 -->
<!-- id：供 label 和 JS 使用，必须唯一 -->
<!-- id：供 label 和 JS 使用，必须唯一 -->
<label for="email">邮箱地址：</label>
<input type="email" id="email" class="input-field" placeholder="请输入邮箱">
<!-- id 是另一个，不能叫 email 了 -->
<!-- class 可以重复，所以和上面的样式一样 -->
<label for="phone">手机号码：</label>
<input type="tel" id="phone" class="input-field" placeholder="请输入手机号">

<!-- 这里的 id 用于 JS 抓取 -->
<button id="submitBtn" class="btn-primary">提交</button>

1. 尽量保持标签在同一行内：将属性写成一行，这样 HTML 代码就能被正确解析。

2. 注释放在标签外部：将注释放在标签外面，避免注释影响标签的属性部分。

## 块级元素和行内元素

| 特性          | 块级元素 (Block-level)                       | 行内元素 (Inline)                                        |
| :------------ | :------------------------------------------- | :------------------------------------------------------- |
| **典型代表**  | `div`、`p`、`h1`~`h6`、`ul`、`li`、`section` | `span`、`a`、`strong`、`em`、`img`                       |
| **换行行为**  | **独占一行**，后面自动换行                   | 不会换行，多个行内元素排在一行                           |
| **宽度**      | 默认占满父元素的**100%**                     | 由**内容**撑开                                           |
| **高度/行高** | 可以设置 `width`/`height`                    | 设置 `width`/`height` **无效**（除非转换display）        |
| **内外边距**  | `margin`/`padding` 四个方向都生效            | 只有**左右** `margin`/`padding` 生效，**上下**不影响布局 |
| **包含关系**  | 可以包含块级或行内元素                       | 通常只能包含行内元素（或文本）                           |

虽然两者都是块级，但有一个**关键区别**：

- **`div`**：没有任何语义，纯粹的**容器**，可以放任何东西
- **`p`**：有语义，代表**段落**，里面**不能放块级元素**

如果想拥有行内的排列方式，又能设置宽高，可以用 `display: inline-block`：

```
<style>
  .btn {
    display: inline-block;  /* 既是行内（不换行），又能设宽高 */
    width: 100px;
    height: 40px;
    margin: 10px;
    background: #3498db;
  }
</style>

<span class="btn">按钮1</span>
<span class="btn">按钮2</span>
```

<style>
  .btn {
    display: inline-block;  /* 既是行内（不换行），又能设宽高 */
    width: 100px;
    height: 40px;
    margin: 10px;
    background: #3498db;
  }
</style>

<span class="btn">按钮1</span>
<span class="btn">按钮2</span>
