本文主要记录对HTML基础知识的学习,主要内容基于 HTML 教程 | 菜鸟教程

基本概念

  1. 定义

    HTML 是指超文本标记语言,它是一套用来描述网页的标记标签。HTML 文档包含了 HTML 标签及文本内容,也就是我们常说的 web 页面。

  2. HTML文档的基本结构

    由声明+头部+body组成

    image-20240710163159973

标签

这里指的是body中的标签和元素

  1. 标签和元素的区别

    标签

    • HTML 标签是由尖括号包围的关键词,比如 <html>
    • HTML 标签通常是成对出现的,比如 <b></b>
    • 标签对中的第一个标签是开始标签,第二个标签是结束标签

    元素

    • 元素即为包括标签和内容的部分:

      1
      2
       <!--这个整体为元素--> 
      <标签>内容</标签>
  2. 常见的四个标签

(1)<h1>-<h6> 用于定义HTML标题

1
2
3
4
<!--标题--> 
<h1>这是一个标题</h1>
<h2>这是一个标题</h2>
<h3>这是一个标题</h3>
  • 请确保将 HTML 标题 标签只用于标题。不要仅仅是为了生成粗体大号的文本而使用标题。

(2)<p> 标签用于定义段落

使用该标签,文本内容结束后会自动换行,行之间存在一些间距

1
2
<!--段落--> 
<p>这是一个段落。</p>

<br> 标签用于在文本中创建换行。他和 <p> 标签的区别就在于它只是文本中创建简单的换行,并不是新的段落,换行之间并没有一定的空白。

(3)<a> 标签用于链接

1
2
<!--链接--> 
<a href="https://www.runoob.com">链接文本</a>
  • <a> 的常见属性

    • href:指定链接目标的URL,这是链接的最重要属性。可以是另一个网页的URL、文件的URL或其他资源的URL。

    • target(可选):指定链接如何在浏览器中打开。常见的值包括 _blank(在新标签或窗口中打开链接)和 _self(在当前标签或窗口中打开链接)。

    • title(可选):提供链接的额外信息,通常在鼠标悬停在链接上时显示为工具提示。

    • rel(可选):表示链接文档与当前文档的关系

      • rel="stylesheet" :表示被链接的文档是一个样式表文件,用于页面的样式定义。
      • rel="icon" :表示被链接的文档是一个图标文件,通常用于网站的 favicon。
      • rel="nofollow:指示搜索引擎不应该跟踪被链接的页面,通常用于防止无关链接对搜索引擎排名的干扰
      • rel="noopener"rel="noreferrer":用来增强安全性。rel="noopener" 通知浏览器在新标签页打开时不应让新页面访问 opener 对象,从而防止恶意页面通过 opener 访问原始页面。rel="noreferrer" 类似,还会阻止传递 referrer 信息。
  • 除了文本内容、图片或其他HTML元素都可以成为链接

    • 文本链接

      1
      <a href="https://www.example.com">访问示例网站</a>
    • 图像链接

      1
      2
      3
      <a href="https://www.example.com">
      <img src="example.jpg" alt="示例图片">
      </a>
    • 锚点链接:除了链接到其他网页外,您还可以在同一页面内创建内部链接,这称为锚点链接。要创建锚点链接,需要在目标位置使用 <a> 元素定义一个标记,并使用 # 符号引用该标记。例如:

      1
      2
      3
      4
      5
      <a href="#section2">跳转到第二部分</a>

      <!-- 在页面中的某个位置 -->
      <!-- 这里可以用name属性也可以用id属性等 -->
      <a name="section2"></a>

      也可以从其他HTML页面创建链接直接指向这里

      1
      2
      <a href="https://www.runoob.com/html/html-links.html#section2">
      访问有用的提示部分</a>
    • 下载链接:如果您希望链接用于下载文件而不是导航到另一个网页,可以使用 download 属性。例如:

      1
      <a href="document.pdf" download>下载文档</a>

(4)图像

1
2
<!--图像--> 
<img src="/images/logo.png" width="258" height="39" />
  • img 标签的常见属性
    • src :图像的 URL 地址
    • alt : 替代性文本。在浏览器无法载入图像时,浏览器将显示这个替代性的文本。
    • width="304" height="228":指定图像的高度和宽度,单位像素。
  1. 其他标签

    • <hr> 标签在 HTML 页面中创建水平线,用于分隔内容,单标签,不需要闭合。
    • <br> 标签用于在文本中创建换行。单标签,不需要闭合。
    • <div>:属于块级标签,独占一行,可以设置宽度、高度以及边距等样式属性。
      • 它适合用于创建页面的大块结构,例如页面的主体区域、容器、布局等。
      • 可以容纳其他块级元素和行内元素,包括其他的 <div><span> 元素。
    • <span>:内联元素,可用作文本的容器,对部分文本进行更精细的CSS制定
  2. 格式化标签

    即加粗、上标、下标等特殊的字体格式标签

    HTML文本格式化|菜鸟教程

元素

  1. 大多数 HTML 元素被定义为块级元素内联元素

    • 块级元素:在浏览器显示时,通常会以新行来开始(和结束)。

      • 实例: <h1>, <p>, <ul>, <table>
    • 内联元素:在显示时,不会以新行开始

      • 实例:<b>, <td>, <a>, <img>

属性

  1. 什么是属性

    • HTML 元素可以设置属性

    • 属性可以在元素中添加附加信息

    • 属性一般描述于开始标签

    • 属性总是以名称/值对的形式出现,比如:name=”value”。(属性推荐使用小写)

      链接标签中的 href 就是属性

  2. 常见的属性类型

    class 为html元素定义一个或多个类名(classname)(类名从样式文件引入)
    id 定义元素的唯一id
    style 规定元素的行内样式(inline style)
    title 描述了元素的额外信息 (作为工具条使用)
    • ID属性不要以数字开头,数字开头的ID在 Mozilla/Firefox 浏览器中不起作用。
    • class和style的区别

      class属性主要用于引用外部或内部样式表中定义的样式类,从而实现样式的复用和统一管理;而style属性则直接为单个元素指定内联样式,适用于需要特定样式的情况。

    • class和id

      注意在 HTML 中,id 属性必须是唯一的。每个元素的 id 值在整个文档中都应该是唯一的,以确保正确的标识和引用。如果需要为多个元素应用相同的样式或进行相同的操作,建议使用 class 属性。

HTML头部

<head>元素包含了所有的头部标签元素。在 <head> 元素中你可以插入脚本(scripts), 样式文件(CSS),及各种meta信息

可以添加在头部区域的元素标签包括: <title>, <style>, <meta>, <link>, <script>, <noscript> 和 <base>

  1. <title> 元素:定义了网页标题

  2. <base> 元素:定义了基本的链接地址/链接目标,该标签作为HTML文档中所有的链接标签的默认链接。

    1
    2
    3
    <head>
    <base href="http://www.runoob.com/images/" target="_blank">
    </head>
  3. <link> 元素:定义了文档与外部资源之间的关系,通常用于链接到样式表

    1
    2
    3
    <head>
    <link rel="stylesheet" type="text/css" href="mystyle.css">
    </head>
    • 其中 href 属性指定了外部样式表的路径
  4. <style>元素:定义了HTML文档的样式文件引用地址,在该元素中你也可以直接添加样式来渲染 HTML 文档

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <head>
    <style type="text/css">
    body {
    background-color:yellow;
    }
    p {
    color:blue
    }
    </style>
    </head>

    这里的 <style> 标签和前面说到的 style 属性又有什么区别呢

    • <style>元素用于在<head>标签内定义整体或特定部分的样式表,适用于页面级别的样式管理。相对于CSS并不能引入外部样式表
    • style属性用于直接在HTML标签内定义特定元素的行内样式,适用于局部的样式设置,具有更高的优先级。
  5. meta 元素:定义一些基本的元数据

    为搜索引擎定义关键词:

    1
    <meta name="keywords" content="HTML, CSS, XML, XHTML, JavaScript">

    为网页定义描述内容:

    1
    <meta name="description" content="免费 Web & 编程 教程">

    定义网页作者:

    1
    <meta name="author" content="Runoob">

    每30秒钟刷新当前页面:

    1
    <meta http-equiv="refresh" content="30">
  6. <script> 元素:加载脚本文件,如js

CSS

  1. 定义:给HTML元素添加样式,可以更好地渲染元素

    CSS 可以通过以下方式添加到HTML中:

    • 内联样式:在HTML元素中使用”style” 属性

      1
      <p style="color:blue;margin-left:20px;">这是一个段落。</p>
    • 内部样式表:在HTML文档头部 <head> 区域使用 <style> 元素 来包含CSS

      1
      2
      3
      4
      5
      6
      <head>
      <style type="text/css">
      body {background-color:yellow;}
      p {color:blue;}
      </style>
      </head>
    • 外部引用:使用外部 CSS 文件

      1
      2
      3
      <head>
      <link rel="stylesheet" type="text/css" href="mystyle.css">
      </head>

    最好的方式是通过外部引用CSS文件。

HTML表格

  1. 定义

    HTML 表格由 <table> 标签来定义。包括tr、td、th三个标签:

    • tr:tr 是 table row 的缩写,表示表格的一行。

    • td:td 是 table data 的缩写,表示表格的数据单元格。

    • th:th 是 table header的缩写,表示表格的表头单元格。通过使用 <th> 元素定义列标题,可以使其在表格中以粗体显示,与普通单元格区分开来。

    • <thead> :用于定义表格的标题部分

    • **<tbody> **:用于定义表格的主体部分

  2. 示例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <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>

    HTML 表格还可以具有其他部分,如 <tfoot> (表格页脚)和 <caption> (表格标题),<tfoot> 可用于在表格的底部定义摘要、统计信息等内容。 <caption> 可用于为整个表格定义标题。

    HTML 表格还支持合并单元格和跨行/跨列的操作,以及其他样式和属性的应用,以满足各种需求。我们也可以使用 CSS 来进一步自定义表格的样式和外观。

HTML列表

  1. 无序列表:使用粗体圆点(典型的小黑圆圈)进行标记。

    1
    2
    3
    4
    <ul>
    <li>Coffee</li>
    <li>Milk</li>
    </ul>
  2. 有序列表:使用数字进行标记

    1
    2
    3
    4
    <ol>
    <li>Coffee</li>
    <li>Milk</li>
    </ol>
  3. 自定义列表

    1
    2
    3
    4
    5
    6
    <dl>
    <dt>Coffee</dt>
    <dd>- black hot drink</dd>
    <dt>Milk</dt>
    <dd>- white cold drink</dd>
    </dl>

HTML表单

HTML 表单用于收集用户的输入信息,表示文档中的一个区域,此区域包含交互控件,将用户收集到的信息发送到 Web 服务器。

HTML 表单通常包含各种输入字段、复选框、单选按钮、下拉列表等元素。

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<form action="/" method="post">
<!-- 文本输入框 -->
<label for="name">用户名:</label>
<input type="text" id="name" name="name" required>

<br>

<!-- 密码输入框 -->
<label for="password">密码:</label>
<input type="password" id="password" name="password" required>

<br>

<!-- 单选按钮 -->
<label>性别:</label>
<input type="radio" id="male" name="gender" value="male" checked>
<label for="male"></label>
<input type="radio" id="female" name="gender" value="female">
<label for="female"></label>

<br>

<!-- 复选框 -->
<input type="checkbox" id="subscribe" name="subscribe" checked>
<label for="subscribe">订阅推送信息</label>

<br>

<!-- 下拉列表 -->
<label for="country">国家:</label>
<select id="country" name="country">
<option value="cn">CN</option>
<option value="usa">USA</option>
<option value="uk">UK</option>
</select>

<br>

<!-- 提交按钮 -->
<input type="submit" value="提交">
</form>
  • <form> 元素用于创建表单,action 属性定义了表单数据提交的目标 URL

  • method 属性定义了提交数据的 HTTP 方法。

    • post:指的是 HTTP POST 方法,表单数据会包含在表单体内然后发送给服务器,用于提交敏感数据,如用户名与密码等。
    • get:默认值,指的是 HTTP GET 方法,表单数据会附加在 action 属性的 URL 中,并以 ?作为分隔符,一般用于不敏感信息,如分页等。例如:https://www.runoob.com/?page=1,这里的 page=1 就是 get 方法提交的数据。
  • <label> 元素用于为表单元素添加标签,提高可访问性。

  • <input> 元素是最常用的表单元素之一,它可以创建文本输入框、密码框、单选按钮、复选框等。type 属性定义了输入框的类型,id 属性用于关联 <label> 元素,name 属性用于标识表单字段。

    • 常见的type属性类型

      • text

      • password:不会明文显示

      • radio:单选

      • checkbox:复选

        1
        2
        3
        4
        <form>
        <input type="checkbox" name="vehicle[]" value="Bike">我喜欢自行车<br>
        <input type="checkbox" name="vehicle[]" value="Car">我喜欢小汽车
        </form>

        image-20240710193501024

      • submit:提交

  • <select> 元素用于创建下拉列表,而 <option> 元素用于定义下拉列表中的选项。

布局

布局即为:将内容安排到多个列中(像杂志或报纸那样),可以使用<div><table> 来实现。

实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!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>

  • <div id="container" style="width:500px"> :整个页面容器,宽度为500像素
  • <div id="header"> :页眉部分,背景色为橙色。
  • <div id="menu"> :菜单部分,背景色为淡黄色,高度200像素,宽度100像素,并使用了float:left;使其浮动在左侧。
  • <div id="content"> :内容部分,背景色为淡灰色,高度200像素,宽度400像素,并使用了float:left;使其浮动在左侧,使得菜单和内容并排显示。
  • <div id="footer"> :页脚部分,背景色为橙色,使用了clear:both;确保在内容下方显示,并设置了居中对齐。

由于创建高级的布局非常耗时,使用模板是一个快速的选项。通过搜索引擎可以找到很多免费的网站模板(您可以使用这些预先构建好的网站布局,并优化它们)。

iframe(框架)

通过使用 iframe,你可以在同一个浏览器窗口中显示不止一个页面。

1
<iframe src="URL"></iframe>

使用 iframe 来显示目标链接页面

iframe 可以显示一个目标链接的页面,目标链接的属性必须使用 iframe 的属性,如下实例:

1
2
<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>

image-20240710194643458

点击之后,iframe中就会显示指向的url

image-20240710194655201

HTML脚本

  • <script> 标签用于定义客户端脚本,比如 JavaScript。<script> 元素既可包含脚本语句,也可通过 src 属性指向外部脚本文件。通常用于图片操作、表单验证以及内容动态更新。

  • <noscript> 元素可包含普通 HTML 页面的 body 元素中能够找到的所有元素。

    只有在浏览器不支持脚本或者禁用脚本时,才会显示 <noscript> 元素中的内容:

    1
    2
    3
    4
    <script>
    document.write("Hello World!")
    </script>
    <noscript>抱歉,你的浏览器不支持 JavaScript!</noscript>

关于JS的学习会另写一篇博客

HTML字符实体

在 HTML 中不能使用小于号(<)和大于号(>),这是因为浏览器会误认为它们是标签。如果想要显示这些字符,我们需要将这些预留字符替换为字符实体

显示结果 描述 实体名称 实体编号
空格    
< 小于号 < <
> 大于号 > >
& 和号 & &
引号 " "
撇号 ' (IE不支持) '
¢ ¢
£ £ £
¥ 人民币/日元 ¥ ¥
欧元
§ 小节 § §
© 版权 © ©
® 注册商标 ® ®
商标
× 乘号 × ×
÷ 除号 ÷ ÷
  • HTML 中的常用字符实体是不间断空格 &nbsp;

    浏览器总是会截短 HTML 页面中的空格。如果您在文本中写 10 个空格,在显示该页面之前,浏览器会删除它们中的 9 个。如需在页面中增加空格的数量,您需要使用 &nbsp; 字符实体。

  • URL同样也需要转换成 ASCII 格式