前端学习日志(1):探索 HTML
欢迎来到《前端学习日志》专栏的第 1 篇文章。在本篇文章中,我们将正式开始前端开发的旅程,探索 HTML 的基础知识,并学习如何创建一个简单的网页。
1. 什么是 HTML?
HTML(HyperText Markup Language,超文本标记语言)是构建网页的基础语言。它通过使用标签来描述网页的结构和内容。无论是文本、图片还是链接,都是通过 HTML 标签来定义和展示的。
1.1 HTML 文档的基本结构
一个完整的 HTML 文档通常包含以下几个部分:
<!DOCTYPE html>:声明文档类型为 HTML5。<html>:根标签,包含整个 HTML 文档。<head>:头部标签,包含网页基础数据,如文档的标题、字符编码等。<body>:主体标签,包含网页的主要内容。
1.2 示例代码
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>我的第一个网页</title>
</head>
<body>
  <h1>欢迎来到我的网站</h1>
  <p>这是我的第一个 HTML 页面。</p>
</body>
</html>

这段代码展示了一个简单的 HTML 文档,包含一个标题和一个段落。通过这个例子,我们可以初步了解 HTML 文档的基本结构和内容。
1.3 使用 VS Code 快速创建页面结构
在 VS Code 中,有一个非常方便的快捷方式,可以帮助我们快速创建基本的 HTML 文档结构。以下是步骤:
- 打开 VS Code,并创建一个新的 HTML 文件,例如 
02-vscode-骨架页面.html。 - 在文件中输入 
!并按下Tab键或者Enter键,VS Code 会自动生成一个基本的 HTML 文档结构。 
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
</body>
</html>

通过这个快捷方式,我们可以快速开始创建和编辑 HTML 页面,而无需手动输入每个标签。这个功能极大地提高了开发效率,特别是对于初学者来说,非常实用。
提示:VS Code 快速创建的文档结构中有些标签和属性会在后续专栏文章中介绍,大家先保持不动就行。
1.4 HTML 注释
在编写 HTML 代码时,我们有时需要添加注释,以帮助理解和维护代码。注释不会显示在网页中,仅供开发者查看。HTML 注释的语法如下:
<!-- 这是一个注释 -->
<p>这段文字会显示在网页中。</p>
<!-- 这段文字不会显示在网页中 -->

注释可以用来解释代码、标记需要注意的部分或临时隐藏部分代码。养成良好的注释习惯,有助于提高代码的可读性和可维护性。
提示:在 VS Code 中使用快捷键 CTRL + / 可以快速生成注释,我们只需要在中间输入注释内容即可。
2. 常用的 HTML 标签
在开始介绍常用 HTML 标签之前,我们先来了解一下 HTML 的基本语法规则:
- HTML 标签用尖括号包围,例如 
<tagname>。 - 大多数 HTML 标签都是成对出现的,例如 
<p>和</p>,第一个标签是开始标签,第二个标签是结束标签。 - 有些 HTML 标签是自闭合的,例如 
<img>和<br>,它们不需要结束标签。 - HTML 标签可以包含属性,属性在开始标签中定义,用于提供有关元素的附加信息,例如 
<img src="image.jpg" alt="示例图片">。 
2.1 标题标签
HTML 提供了六级标题标签,分别是 <h1> 到 <h6>,<h1> 是最高级标题,<h6> 是最低级标题。
<h1>这是一级标题</h1>
<h2>这是二级标题</h2>
<h3>这是三级标题</h3>
<h4>这是四级标题</h4>
<h5>这是五级标题</h5>
<h6>这是六级标题</h6>

2.2 段落标签
段落标签 <p> 用于定义一个段落。段落是文本的基本单位,每个段落之间会有默认的间距。
<p>这是一个段落。</p>
2.3 换行标签
换行标签 <br> 用于在文本中插入换行符,适合用于需要手动控制换行的位置。
<p>这是第一行。<br>这是第二行。</p>
2.4 水平线标签
水平线标签 <hr> 用于插入一条水平分割线,常用于分隔不同的内容部分。
<p>段落上方的分割线。</p>
<hr>
<p>段落下方的分割线。</p>
2.5 链接标签
链接标签 <a> 用于创建超链接,href 属性指定链接目标。超链接是网页的重要组成部分,允许用户在不同页面之间导航。
<a href="https://www.example.com">访问示例网站</a>
2.6 图像标签
图像标签 <img> 用于在网页中嵌入图像,src 属性指定图像路径,alt 属性提供图像的替代文本。
<img src="example.jpg" alt="示例图片">
2.7 列表标签
无序列表使用 <ul> 和 <li> 标签,有序列表使用 <ol> 和 <li> 标签。列表是展示信息的一种常见方式。
<ul>
  <li>列表项1</li>
  <li>列表项2</li>
</ul>
<ol>
  <li>列表项1</li>
  <li>列表项2</li>
</ol>

2.8 定义列表标签
定义列表使用 <dl>、<dt> 和 <dd> 标签,<dl> 表示定义列表,<dt> 表示定义项,<dd> 表示定义描述。
<dl>
  <dt>HTML</dt>
  <dd>超文本标记语言</dd>
  <dt>CSS</dt>
  <dd>层叠样式表</dd>
</dl>

2.9 表格标签
表格使用 <table>、<thead>、<tbody>、<tfoot>、<tr>、<th> 和 <td> 标签。表格用于显示结构化的数据,其中:
<table>:定义一个表格。<thead>:定义表格的表头部分。<tbody>:定义表格的主体部分。<tfoot>:定义表格的表尾部分。<tr>:定义表格中的一行。<th>:定义表头单元格。<td>:定义表格单元格。
<table border="1">
  <thead>
    <tr>
      <th>名称</th>
      <th>年龄</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>张三</td>
      <td>28</td>
    </tr>
    <tr>
      <td>李四</td>
      <td>32</td>
    </tr>
  </tbody>
  <tfoot>
    <tr>
      <td colspan="2">总计</td>
    </tr>
  </tfoot>
</table>

提示:使用 colspan 属性可以设置单元格跨列合并(横向),使用 rowspan 属性可以设置单元格跨行合并(纵向)。
2.10 分区和内联标签
<div>:用于定义文档中的分区或节,通常用于布局和样式。<span>:用于定义文档中的小块文本,
常用于样式和布局。
<div>
  <h2>这是一个分区</h2>
  <p>这是一个段落,位于一个分区中。</p>
</div>
<p>这是一个<span style="color: red;">红色</span>的文本。</p>

2.11 文本格式标签
<strong>和<b>:用于加粗文本,<strong>表示语义上的重要性,<b>仅用于视觉上的加粗。<em>和<i>:用于斜体文本,<em>表示语义上的强调,<i>仅用于视觉上的斜体。<del>和<s>:用于表示删除的文本,<del>表示内容已被删除,<s>表示不再正确或相关的文本。<ins>:用于表示插入的文本。<u>:用于表示下划线文本。
<p>这是一个<strong>重要</strong>的段落。</p>
<p>这是一个<b>加粗</b>的段落。</p>
<p>这是一个<em>强调</em>的段落。</p>
<p>这是一个<i>斜体</i>的段落。</p>
<p>这是一个<del>删除</del>的文本。</p>
<p>这是一个<s>不再相关</s>的文本。</p>
<p>这是一个<ins>插入</ins>的文本。</p>
<p>这是一个<u>下划线</u>的文本。</p>

2.12 表单标签
表单使用 <form>、<input>、<label>、<textarea>、<button>、<select> 和 <option> 标签。表单用于收集用户输入。
<form>
  <label for="name">姓名:</label>
  <input type="text" id="name" name="name">
  <br>
  <label for="message">留言:</label>
  <textarea id="message" name="message"></textarea>
  <br>
  <label for="gender">性别:</label>
  <select id="gender" name="gender">
    <option value="male">男</option>
    <option value="female">女</option>
  </select>
  <br>
  <button type="submit">提交</button>
</form>

2.13 媒体标签
HTML 提供了 <audio> 和 <video> 标签用于在网页中嵌入音频和视频。
2.13.1 音频标签
音频标签 <audio> 用于在网页中嵌入音频,src 属性指定音频文件路径,controls 属性提供播放控件。
<audio controls>
  <source src="audiofile.mp3" type="audio/mp3">
  您的浏览器不支持 audio 标签。
</audio>

2.13.2 视频标签
视频标签 <video> 用于在网页中嵌入视频,src 属性指定视频文件路径,controls 属性提供播放控件。
<video width="320" height="240" controls>
  <source src="videofile.mp4" type="video/mp4">
  您的浏览器不支持 video 标签。
</video>

2.14 HTML5 语义化标签
HTML5 提供了一些新的标签,用于更好地定义文档结构和语义:
<header>:定义文档或节的头部。<nav>:定义导航链接的部分。<main>:定义文档的主要内容。<section>:定义文档中的节。<article>:定义独立的内容区域。<aside>:定义侧边栏内容。<footer>:定义文档或节的页脚。
<header>
  <h1>我的网站</h1>
  <nav>
    <ul>
      <li><a href="#home">首页</a></li>
      <li><a href="#about">关于</a></li>
      <li><a href="#contact">联系</a></li>
    </ul>
  </nav>
</header>
<main>
  <article>
    <h2>文章标题</h2>
    <p>这是文章内容。</p>
  </article>
  <aside>
    <h2>相关内容</h2>
    <p>这是侧边栏内容。</p>
  </aside>
</main>
<footer>
  <p>版权所有 © 2024</p>
</footer>

2.15 HTML 文件之间的 include
在大型网站或项目中,我们经常需要在不同的 HTML 文件之间共享相同的头部或底部等内容。通过 HTML 的 include 技术,可以实现这种内容复用,减少重复代码。
使用 include 技术,可以将常用的内容提取到单独的文件中,并在需要的地方进行引用。例如,我们可以将导航栏提取到 navbar.html 文件中,并在主文件中进行引用。通过这种方式,我们可以有效地管理和复用代码,提高开发效率。
<!-- navbar.html -->
<nav>
  <ul>
    <li><a href="#home">首页</a></li>
    <li><a href="#about">关于</a></li>
    <li><a href="#contact">联系</a></li>
  </ul>
</nav>
在主文件中引用:
<!-- index.html -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>我的商业网站</title>
</head>
<body>
  <!-- 引用导航栏 -->
  <!--#include file="navbar.html" -->
  <main>
    <h1>欢迎来到我的网站</h1>
    <p>这是一个包含引用文件的示例页面。</p>
  </main>
</body>
</html>

提示:如果要看到 HTML 文件之间的 include 的运行效果,可以使用 Nginx 或 Apache 服务器的 SSI(Server Side Includes)功能,相关内容本文不再展开介绍,感兴趣的朋友可以自行百度。
3. 实战练习:创建一个简单的网页
接下来,我们将通过一个实战练习来巩固所学知识,创建一个包含标题、段落、图片和链接的简单网页。这个网页的结构尽量符合商业网站的逻辑,包括导航栏、主内容区、侧边栏和页脚。
3.1 创建 HTML 文件
在 VS Code 中,新建一个 HTML 文件 05-html-案例.html,输入以下代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>我的商业网站</title>
  <style>
    body {
      font-family: Arial, sans-serif;
    }
    header,
    nav,
    main,
    aside,
    footer {
      margin: 10px;
      padding: 10px;
      border: 1px solid #ccc;
    }
    header {
      background-color: #f4f4f4;
    }
    nav ul {
      list-style-type: none;
      padding: 0;
    }
    nav ul li {
      display: inline;
      margin-right: 10px;
    }
    main {
      display: flex;
    }
    article {
      flex: 3;
    }
    aside {
      flex: 1;
      margin-left: 10px;
    }
    footer {
      text-align: center;
      background-color: #f4f4f4;
    }
  </style>
</head>
<body>
  <header>
    <h1>我的商业网站</h1>
    <nav>
      <ul>
        <li><a href="#home">首页</a></li>
        <li><a href="#about">关于</a></li>
        <li><a href="#services">服务</a></li>
        <li><a href="#contact">联系</a></li>
      </ul>
    </nav>
  </header>
  <main>
    <article>
      <h2>欢迎来到我的网站</h2>
      <p>这是一个商业网站的示例页面,包含多个常见的 HTML 标签。</p>
      <img src="example.jpg" alt="示例图片">
      <p>访问 <a href="https://www.example.com">示例网站</a> 获取更多信息。</p>
      <hr>
      <h3>我们的服务</h3>
      <ul>
        <li>服务1</li>
        <li>服务2</li>
        <li>服务3</li>
      </ul>
      <h3>联系我们</h3>
      <form action="/submit" method="post">
        <label for="name">姓名:</label>
        <input type="text" id="name" name="name">
        <br>
        <label for="message">留言:</label>
        <textarea id="message" name="message"></textarea>
        <br>
        <label for="gender">性别:</label>
        <select id="gender" name="gender">
          <option value="male">男</option>
          <option value="female">女</option>
        </select>
        <br>
        <button type="submit">提交</button>
      </form>
    </article>
    <aside>
      <h2>侧边栏</h2>
      <p>这是侧边栏内容,可以放置广告、链接等。</p>
      <audio controls>
        <source src="audiofile.mp3" type="audio/mp3">
        您的浏览器不支持 audio 标签。
      </audio>
      <video width="320" height="240" controls>
        <source src="videofile.mp4" type="video/mp4">
        您的浏览器不支持 video 标签。
      </video>
    </aside>
  </main>
  <footer>
    <p>版权所有 © 2024</p>
  </footer>
</body>
</html>

提示:实战案例增加了一些 CSS,这样可以方便大家看到效果,从而可能会对 HTML 的语义化标签更有感觉,有关 CSS 相关的内容,会在后续专栏中更新。
4. 结语
通过这篇文章,我们了解了 HTML 的基本概念和语法,以及常用的标签和元素。掌握这些基础知识是进行前端开发的第一步。在接下来的文章中,我们将进一步探索 CSS 和 JavaScript,逐步构建起对前端开发的全面理解,敬请期待。
- 本专栏文档及配套代码的 GitHub 地址:壹刀流的技术人生。
 - HTML 标签参考手册:HTML 标签参考手册。
 
提示:不建议死记硬背标签,用多了就记住了,想不起来可以随时查手册。