哎,你好呀!看到你点开这个标题,我猜你可能是想转行做前端,或者是设计、运营同学想自己搭个简单的网页,又或者纯粹是对“网页是怎么长出来的”这件事感到好奇。

别担心,HTML5真的没有你想象中那么可怕。甚至可以说,它比大多数人理解的都要直观。你不需要有编程基础,只需要你会用电脑,会打字,就能学会。

今天这堂课,我们不讲枯燥的定义,我把你当成一个对世界充满好奇的小朋友,咱们一边拆房子,一边盖房子。我会用最通俗的大白话,配合实实在在的代码,带你从“我是个小白”走到“我能自己做一个像样的网页”。

准备好了吗?咱们开工。

第一章:网页到底是什么?先打破你的“神秘感”

很多人一听“前端开发”,脑子里就是满屏绿色的代码,觉得那是黑客在敲键盘。其实不是的。

网页,本质上就是一封写给浏览器的“装修说明书”。

想象一下,你住在一个毛坯房里(这就是空白文档),你想把它装修成法式复古风还是现代简约风?你不能直接喊一声“变”,你得给工人(浏览器)一张详细的图纸。

这张图纸,就是HTML。

而那张图纸上写的不是文字,是一堆特殊的标记(Tags)。浏览器读到了 <h1> 这个标记,它就明白:“哦,这是一个大标题,我要把它写得大大的、粗粗的。” 读到了 <img>,它就明白:“哦,这里要放一张图片。”

1.1 浏览器是怎么工作的?

为了让你真的懂,我给你画个简单的流程图:

  1. 你:在记事本里写了一堆代码,存成 index.html。
  2. 浏览器:双击打开这个文件。
  3. 解码:浏览器看着你的代码,开始“翻译”。
  4. 渲染:浏览器把你写的 <h1>你好</h1> 变成了屏幕上那个大大的“你好”。

你看,HTML 只是骨架。如果你只写 HTML,那个网页会惨不忍睹——就像一个人有骨骼肌肉,但没有皮肤,也没有穿衣服。

所以,我们通常还要搭配两个小伙伴:

  • HTML:负责结构(头、手、脚在哪里)。
  • CSS:负责样式(穿红衣服还是蓝衣服,头发梳什么发型)。
  • JavaScript:负责行为(手能动起来,脚能跑起来,点击按钮会弹出提示框)。

本章重点:今天我们专注讲 HTML5,也就是怎么搭这个骨架。至于穿衣服和让手脚动起来,我们后面会顺带提一下,但今天的主角是结构。

第二章:工欲善其事,先利其器

别去花大几百买什么专业软件!对于初学者,我强烈推荐一个工具,甚至可以说是“神器”:

VS Code (Visual Studio Code)

这是一款微软免费开发的代码编辑器。它好在哪里?

  • 它会给你的代码自动上色(语法高亮),让你一眼看出哪里是标签,哪里是属性。
  • 它有智能提示,你输入一半,它帮你猜后面要写什么。
  • 它免费、轻量、跨平台(Windows/Mac都行)。

2.1 安装与创建第一个文件

  1. 去 VS Code 官网下载并安装。
  2. 打开 VS Code,新建一个文件夹,名字随便起,比如叫 my-first-website。
  3. 在 VS Code 里选择“打开文件夹”,选中刚才那个。
  4. 在左侧文件树里,右键 -> 新建文件,命名为 index.html。

注意:一定要叫 index.html,因为这是网站的“主页”,浏览器默认会优先找这个文件。

2.2 你的第一段代码:Hello World

现在,双击打开这个 index.html,输入下面这行代码。别复制粘贴,亲手敲一遍,手要有记忆感:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>我的第一个网页</title>
</head>
<body>
    <h1>你好,世界!</h1>
    <p>这是我写的第一个HTML网页,激动不激动?</p>
</body>
</html>

敲完之后,保存(Ctrl+S),然后去文件夹里双击打开这个文件,浏览器就会跳出来。你会看到中间写着大大的“你好,世界!”和下面一行小字。

恭喜你!你已经是一个正式的“前端开发者”了。虽然它看起来很丑,但它是活的,它是你亲手创造的数字世界。

第三章:HTML 的骨架结构——解剖一只“纸牌屋”

刚才那段代码,看起来乱糟糟的,但它是所有网页的“标准模板”。咱们把它拆开,一个个看明白。

3.1 声明文档类型:<!DOCTYPE html>

这一行必须写在第一行。它是在告诉浏览器:“嘿,醒醒!这是一个 HTML5 文档,请用 HTML5 的标准来解析我!” 如果不写这一行,浏览器可能会进入“怪异模式”,你的网页在很多浏览器上都会显示乱掉。

3.2 根元素:<html>

所有的内容都被包裹在这个标签里。它就像整个房子的地基。

  • lang="zh-CN":这是一个属性,告诉浏览器这个网页是简体中文的。这很重要,否则浏览器可能不知道如何正确显示中文,甚至影响搜索引擎(SEO)收录。

3.3 头部信息:<head>

注意,这里面的内容,用户在网页上看不到! <head> 是存放“元数据”的地方,是给浏览器和搜索引擎看的。

  • <meta charset="UTF-8">:这是编码声明。UTF-8 是国际标准字符集,必须加!不加它,你的中文可能会变成一堆乱码(比如 “浣犲ソ” 这种鬼东西)。
  • <title>我的第一个网页</title>:这是网页标题。你会在浏览器的最顶部的标签页上看到它。

3.4 身体内容:<body>

这才是网页真正的内容! 你在浏览器里看到的标题、图片、按钮、文字,全都在 <body> 和 </body> 之间。

第四章:文本的排版——把字写好看

HTML 最核心的作用,就是告诉浏览器:“这段是标题”,“那段是段落”,“这部分很重要,加个粗”。

4.1 标题标签:从 H1 到 H6

HTML 提供了 6 级标题,从 <h1> 到 <h6>,字体依次变小,重要性依次降低。

<h1>这是 biggest 的标题,一个页面通常只有一个</h1>
<h2>这是二级标题</h2>
<h3>这是三级标题</h3>
<p>而 <strong>这是普通段落,但是加粗了。</strong> 这不是强调,这是加粗。</p>

专家建议:从 SEO(搜索引擎优化)的角度看,<h1> 就像是一本书的书名,非常重要,一个页面最好只出现一次。

4.2 段落与换行

  • <p>:段落标签。浏览器会自动在段落之间加上间距。
  • <br>:换行标签。这是一个自闭合标签,没有结束标签。
<p>第一行文字。</p>
<p>第二行文字。</p>
<!-- 浏览器会显示两个段落,中间有空隙 -->

<p>第一行文字。<br>第二行文字。</p>
<!-- 浏览器会显示在一处,只是强制换行了,没有段落间距 -->

4.3 文本格式化标签

有时候我们需要强调某些内容,或者展示代码。

标签 作用 示例
<strong> 或 <b> 加粗 <strong>重要内容</strong>
<em> 或 <i> 斜体/强调 <em>语气强调</em>
<mark> 高亮标记 <mark>黄色高亮</mark>
<small> 小号字体 <small>版权声明在这里</small>
<del> 删除线 <del>原价100元</del>
<code> 代码格式 <code>alert('hello')</code>

一个小技巧:尽量用语义化的标签。比如表示“重要”,用 <strong> 而不是 <b>;表示“斜体强调”,用 <em> 而不是 <i>。因为 <strong> 告诉搜索引擎“这是重点”,而 <b> 只是视觉上的粗体。

第五章:列表——让信息井然有序

网页上的列表到处都是,比如菜单、商品清单、步骤说明。HTML 主要有两种列表。

5.1 无序列表 <ul>

用于没有顺序之分的列表,比如导航菜单。

<ul>
    <li>苹果</li>
    <li>香蕉</li>
    <li>橙子</li>
</ul>

浏览器会自动在前面加上小圆点。

5.2 有序列表 <ol>

用于有顺序的列表,比如“第一步、第二步”。

<ol>
    <li>打开网页</li>
    <li>点击登录</li>
    <li>输入密码</li>
</ol>

浏览器会自动加上 1. 2. 3. 这样的编号。

5.3 定义列表 <dl>

这个比较少用,但有时候会用到,比如 FAQ 页面,左边是问题,右边是答案。

<dl>
    <dt>什么是HTML?</dt>
    <dd>HTML是网页的骨架。</dd>
    
    <dt>什么是CSS?</dt>
    <dd>CSS是网页的皮肤。</dd>
</dl>

第六章:图片与超链接——网页的“连接”与“血肉”

纯文字的网页是孤独的。网页之所以强大,是因为它可以链接到其他地方,以及展示图像。

6.1 超链接 <a>

链接是网页的灵魂。没有链接,互联网就是一座座孤岛。

语法:<a href="链接地址">链接文字</a>

<!-- 链接到百度 -->
<a href="https://www.baidu.com">去百度逛逛</a>

<!-- 在新标签页打开链接(非常重要!用户体验最佳实践) -->
<a href="https://www.baidu.com" target="_blank">在新标签页打开百度</a>
  • href:Hypertext Reference 的缩写,就是“要去哪里”。
  • target="_blank":这是一个属性,意思是“在新窗口/新标签页打开”。这能防止用户离开你的网站,是非常好的习惯。

6.2 图片 <img>

图片标签也是一个自闭合标签,它没有结束标签。

语法:<img src="图片地址" alt="图片描述">

<img src="https://picsum.photos/200/300" alt="一只可爱的小猫咪">
  • src:Source,图片从哪里加载。可以是本地路径(如 images/cat.jpg),也可以是网络链接。
  • alt:替代文本。这非常重要!
    1. 如果图片加载失败,会显示这段文字。
    2. 如果有用户视力障碍,使用屏幕阅读器浏览网页时,会读出这段文字。
    3. 搜索引擎爬虫看不懂图片,但能读懂 alt 文字,所以对 SEO 极有帮助。

切记:永远不要省略 alt 属性!哪怕只是一个空格,也比没有好。

第七章:布局的基石——块级元素 vs 内联元素

这是初学者最容易晕的地方。为什么有的标签独占一行,有的挤在一起?

  • 块级元素 (Block-level):像是一个个大箱子,独占一行,宽度默认撑满父容器。
    • 常见标签:<div>, <h1>-<h6>, <p>, <ul>, <ol>, <li>, <header>, <footer>, <section>。
  • 内联元素 (Inline):像是积木,可以并排挤在一起,宽度由内容决定。
    • 常见标签:<span>, <a>, <img>, <strong>, <em>。
<div>我是一个大块头,我独占一行。</div>
<div>我也是大块头,我也独占一行。</div>

<span>我是小积木。</span>
<span>我也是小积木。</span>
<span>我们可以排成一排。</span>

理解这个区别,你以后在布局时就知道:想把两个东西并排,就把它们都放进 <div> 或者用 CSS 的 Flex 布局;如果你想在一个段落里把某个词标红,就用 <span>。

第八章:语义化标签——HTML5 的革命

在 HTML5 之前,大家写网页乱得一塌糊涂,到处都是 <div>,比如 <div class="header">,<div class="footer">。这样写,浏览器和搜索引擎很难理解这些区域到底是什么。

HTML5 引入了一系列语义化标签,让代码自己会说话。

<header>
    <h1>网站标题</h1>
    <nav>
        <a href="#">首页</a>
        <a href="#">关于我们</a>
        <a href="#">联系我们</a>
    </nav>
</header>

<main>
    <article>
        <h2>这是一篇文章的标题</h2>
        <p>文章的具体内容...</p>
    </article>
    
    <aside>
        <h3>侧边栏</h3>
        <p>推荐文章...</p>
    </aside>
</main>

<footer>
    <p>版权所有 © 2026</p>
</footer>
  • <header>:页眉,放 logo 和导航。
  • <nav>:导航栏,专门放链接列表。
  • <main>:主要内容区域,一个页面通常只有一个。
  • <article>:独立的文章内容,可以单独分发(比如RSS订阅)。
  • <section>:主题章节,用于将内容分组。
  • <aside>:侧边栏,内容与主内容稍微相关但不是核心。
  • <footer>:页脚,放版权、备案号、相关链接。

为什么要用语义化?

  1. 代码可读性高:你自己几个月后回头看,一眼就能明白哪里是头部,哪里是底部。
  2. SEO 友好:搜索引擎爬虫能更准确地抓取你的重点内容,提升排名。
  3. 无障碍访问:屏幕阅读器能更好地帮助视障用户导航。

第九章:表单——让用户跟你“说话”

网页不只是用来“看”的,更是用来“交互”的。注册、登录、搜索、反馈,这些都需要表单。

9.1 表单的基本结构

<form action="/submit-data" method="POST">
    <!-- 这里放输入控件 -->
</form>
  • action:表单提交到哪里去?(通常是后端服务器的地址)。
  • method:怎么提交?GET 是查询(参数会在 URL 里显示,不安全),POST 是提交(参数在请求体里,相对安全)。

9.2 常用的输入控件

<form>
    <!-- 文本输入框 -->
    <label for="username">用户名:</label>
    <input type="text" id="username" name="username" placeholder="请输入用户名">
    
    <!-- 密码输入框 -->
    <label for="password">密码:</label>
    <input type="password" id="password" name="password" placeholder="请输入密码">
    
    <!-- 单选按钮 -->
    <p>性别:</p>
    <input type="radio" id="male" name="gender" value="male">
    <label for="male">男</label>
    <input type="radio" id="female" name="gender" value="female">
    <label for="female">女</label>
    
    <!-- 多选框 -->
    <p>爱好:</p>
    <input type="checkbox" id="coding" name="hobby" value="coding">
    <label for="coding">编程</label>
    <input type="checkbox" id="reading" name="hobby" value="reading">
    <label for="reading">阅读</label>
    
    <!-- 下拉菜单 -->
    <label for="city">城市:</label>
    <select id="city" name="city">
        <option value="beijing">北京</option>
        <option value="shanghai">上海</option>
        <option value="guangzhou">广州</option>
    </select>
    
    <!-- 文本域(多行输入) -->
    <label for="message">留言:</label>
    <textarea id="message" name="message" rows="4" cols="30"></textarea>
    
    <!-- 提交按钮 -->
    <button type="submit">提交</button>
</form>

关键点解析:

  • <label> 和 for 属性:把标签和输入框绑定。点击“用户名”三个字,光标会自动跳到输入框里。这个小细节能极大提升用户体验。
  • name 属性:这个最重要!提交表单时,服务器是根据 name 来获取数据的,不是 id。
  • placeholder:输入框里的灰色提示文字,输入后消失。

第十章:综合实战——做一个个人名片网页

光说不练假把式。现在,我们把前面学到的所有知识,组装成一个完整的个人名片网页。

请新建一个文件 index.html,然后完整抄写并理解以下代码:

”`html <!DOCTYPE html>