前置知识: 零基础起步

网页是什么:浏览器画出来的文本文件

10 min入门

以「你在浏览器里看到的每一个页面,骨子里都是一个文本文件」建立网页心智模型:HTML/CSS/JavaScript 三件套分工、右键源代码与 F12 Elements 的区别、URL 与 HTTP 一句话预告,并现场写出第一个双击就能打开的 HTML 页面。

前置知识

  • 已完成 零基础计算机常识:会新建文件夹与文件,知道扩展名决定「双击后用什么程序打开」;
  • 不需要任何编程经验。本篇代码都能原样复制,你只需要一个浏览器(Chrome 或 Edge)和一个文本编辑器(记事本或 VS Code)。

学习目标

读完本文你将能够:

  1. 说清「网页是浏览器渲染出来的文本文件」,以及双击打开的本地页面与访问网站拿到的页面是同一种东西;
  2. 说出 HTML、CSS、JavaScript 三件套各自负责什么,并用一句话类比复述;
  3. 认出标签的三段结构(开始标签、内容、结束标签),知道属性写在开始标签里;
  4. 从零写出第一个最小 HTML 页面,双击打开并看到预期效果;
  5. 用「右键查看源代码」和 F12 的 Elements 面板两种方式偷看任何网页,并说清两者的区别。

预计 30 到 45 分钟,包含 2 组动手实验与 4 道练习。

1. 问题引入:页面再炫,骨子里都是文本文件

你刚在某个游戏官网逛完:大图轮播、排行榜实时刷新、按钮悬停会发光。看起来离「自己写一个」隔着十万八千里。现在拆穿它:你在浏览器里看到的每一个页面,骨子里都是一个文本文件——和你桌面上的「新建文本文档」是同一类东西,只是内容换成了浏览器认识的标记,扩展名换成了 .html。

验证只需要一分钟:打开记事本,写几行标记,存成 .html,双击,得到一个真网页。网页没有魔法,浏览器的工作就是「读文本 → 画画面」。

顺手纠正一个容易吓退人的误会:HTML 不是编程语言,不会 if、不会循环、不做计算,只做一件事——给内容贴标签,回答「这里是什么」。判断与计算是 JavaScript 的活,本篇一个字不碰。

2. 动手实验一:一分钟造出第一个网页

2.1 写文件

新建一个文件夹 webpage-experiment(名字随意),在里面新建文件 index.html,完整内容如下:

html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>我的第一个网页</title>
</head>
<body>
  <h1>你好,世界</h1>
  <p>这是我亲手写出的第一个网页。</p>
  <a href="https://developer.mozilla.org">点我去 MDN 看看</a>
</body>
</html>

三行先混个眼熟:<!DOCTYPE html> 告诉浏览器「按现行标准渲染」(第 040 篇讲透);<meta charset="UTF-8"> 声明文字编码,没有它中文可能乱码(第 060 篇讲透)。其余标签马上拆解。

2.2 打开看效果

保存,双击文件(或把它拖进浏览器窗口)。预期效果:浏览器标签页显示「我的第一个网页」;页面上是一行加粗大标题「你好,世界」,下面一段普通文字,再下面一行蓝色带下划线的链接——点它,浏览器会带你跳到 MDN 的网站。

2.3 拆解这十几行

先看整体结构,任何网页都是这两层:

text
html(根:整个文档的唯一祖先)
├── head(元信息:标题、编码……访客看不见,浏览器看得见)
└── body(内容:文字、图片、链接……访客看得见)

再解剖一个标签,三段式:

text
  <p>  这是我亲手写出的第一个网页。  </p>
  └┬┘  └───────────┬───────────┘  └┬┘
开始标签           内容            结束标签
  • p 代表 paragraph(段落),h1 是一级标题。常用的还有 a(链接)、img(图片)、ul 与 li(列表),本模块后面逐个讲;
  • <a href="..."> 里的 href 是属性——写在开始标签里的附加信息,回答「链接去哪」。现在记住「属性长在开始标签里」就够;
  • 三条习惯从第一天养成:标签名用小写、属性值用引号包住、写完开始标签立刻补结束标签。

3. 核心概念:三件套分工

你刚写的页面只有 HTML。真实网页由三种技术配合完成:

技术一句话类比负责什么长什么样
HTML素坯结构与内容:这里有什么<h1>标题</h1>
CSS化妆师外观:长什么样h1 { color: red; }
JavaScript操偶师行为:点了会怎样button.onclick = ...

类比口径全课程统一:HTML 是素坯,CSS 是化妆师,JavaScript 是操偶师。素坯决定页面有没有眉眼(标题、段落、按钮);化妆师决定脸色、口红色号、眉毛粗细;操偶师在幕后牵线,让页面听见点击、刷新排行榜、弹出提示。

回头拆那个游戏官网:排行榜的数据列表是 HTML(素坯),轮播动画是 CSS(化妆),「实时刷新」是 JavaScript 在牵线(操偶)。三个模块分别深入:本模块学素坯,CSS 是什么 学化妆,JavaScript 是什么 学操偶。

4. 动手实验二:偷看任何网页的两扇窗

HTML 最好的玩具是别人的网页。找一个大网站(比如 MDN 首页),做两个动作:

  1. 右键 → 查看网页源代码(Ctrl+U):新标签页铺满代码。这是服务器发来的原始文本文件——和你刚写的 index.html 是同一种东西,只是数量多、嵌套深,而且只读;
  2. 按 F12 打开开发者工具,切到 Elements(元素)面板:这也是代码,但性质不同——它是浏览器「消化」之后的活结构,包含 JavaScript 后来动态塞进去的内容,而且可以直接改(改的是内存副本,刷新就还原)。

区别记一句口诀:查看源代码看食材,Elements 看摆好盘的菜。动画满天飞的页面,源代码里可能只有几个空盒子——内容是 JS 运行后才填进去的,只有 Elements 看得到。预期效果:两边都是熟悉的 < 标签语法;认不出的标签查 MDN,不用背。

5. 一句话预告:URL 与 HTTP

双击打开时,地址栏以 file:/// 开头——浏览器读的是你硬盘上的文件。访问网站时,地址栏是 https://...——浏览器在向另一台电脑(服务器)要文件。那串地址叫 URL(去哪台机器、要哪个文件),两台机器之间对话的规矩叫 HTTP。

现在只需知道:服务器发来的,和你双击打开的,是同一种 HTML 文件。网络那一半,HTTP 协议 所在的 networking 模块深讲;网页开发做的是拿到文件之后的这一半。

6. 修改实验

对 index.html 动手,每一步先预测再刷新:

  1. 把 <h1> 里的文字换成你的名字,保存,刷新——大标题跟着变。「改、存、刷、看」四拍循环是前端最基础的工作节奏,第 030 篇会把它提速;
  2. 在 <body> 里补一行 <h2>二级标题</h2>。预测:它比 h1 大还是小?——刷新验证,顺便发现数字越大级别越低;
  3. 把 <title> 改成别的文字。预测:正文变还是标签页变?——标签页。title 不进页面,只进标签页(和搜索结果列表);
  4. 把链接的 href 换成你常去的网站,文字改成对应的名字,点击验证跳转。

7. 常见错误与调试实录

错误一:双击打开的是记事本。原因:系统隐藏了扩展名,文件其实是 index.html.txt。修法:资源管理器「查看」里勾选「文件扩展名」(Windows),确认真名后重命名为 index.html。

错误二:改了没反应。两个嫌疑:没保存(VS Code 标签上有个圆点就是没保存),或没刷新(按 F5)。铁证法:页面上按 Ctrl+U——浏览器实际拿到的文本和你刚写的对得上吗?对不上,就是保存环节的锅。

错误三:忘写结束标签。把 <a> 的 </a> 删掉试试:

html
<a href="https://developer.mozilla.org">点我去 MDN 看看
<p>这是我亲手写出的第一个网页。</p>

页面不报错、不白屏,但「这是我亲手写出的第一个网页」也变成了蓝色链接。按 F12 看 Elements:浏览器自作主张把后面的内容都塞进了 <a> 里。HTML 的容错是把双刃剑:写错不报错,但结构可能不是你要的。「写完开始标签立刻补结束标签」能避开大半此类事故。

8. 实际场景

  • 接手任何网页:先 Ctrl+U 与 Elements 各看一眼,比读文档快;
  • 爬虫与自动化测试:程序读的就是你写的标签,标签越规范越好解析(第 170 篇的伏笔);
  • 邮件模板:营销邮件正文就是一份受限的 HTML——客户端支持参差,只能用老写法;
  • 排查「网页显示不对」:先分清是结构错(Elements)还是样式错(CSS 模块的方法)。

9. 小练习

预测题(5 分钟):把 index.html 的 head 与 body 开头改成下面这样(其余内容不动):

html
<title>榜单</title>
...
<h1>游戏周报</h1>

问题:标签页上显示的是哪个词?页面大标题是哪个词?

答案(写完再对照):标签页「榜单」,大标题「游戏周报」。head 里的东西只给浏览器看,body 里的东西才给访客看。

修改题(10 分钟):给页面加一段自我介绍——一个 <h2> 配两个 <p>;再把链接换成你最喜欢的游戏官网。验收:新标题比大标题小;点击链接能跳到正确网站;Ctrl+U 能看到你新写的标签。

修Bug 题(10 分钟):下面页面有真实 bug,症状是「链接后面的一整段也变成蓝色链接,点哪都跳转」。先用 F12 的 Elements 看 <a> 包到了哪里,再修复:

html
<body>
  <h1>我的游戏周报</h1>
  <a href="rank.html">查看完整榜单
  <p>本榜单每周一更新。</p>
</body>

答案(修完再对照):<a> 漏了结束标签,浏览器把后面的 <p> 也当成链接内容。在「查看完整榜单」后面补上 </a> 即可。

挑战题(半小时,不看正文独立完成):做一张「我的游戏年度榜单」页面。验收清单:单独文件夹里的 index.html;标签页标题与大标题内容不同;一个 h1、至少三个 h2(各配一段 p);至少一个能点开的外链;只用本篇出现过的标签。做完 Ctrl+U 自查——代码应与编辑器里的一字不差。

10. 与之前和之后的知识的关系

11. 官方文档

12. 自我检查

  • 能不看笔记复述「素坯、化妆师、操偶师」各对应哪门技术、负责什么;
  • 能默写标签的三段结构,并说出属性写在哪里;
  • index.html 是你从零建出来的,能一句话说出 <!DOCTYPE html> 与 <meta charset> 各干什么(深讲在后面);
  • 会用 Ctrl+U 与 F12 的 Elements 偷看网页,并能说出两者的区别;
  • 遇到「改了没反应」,知道按「保存 → 刷新 → Ctrl+U 对照」排查。

本章总结

网页是浏览器渲染出来的文本文件。三件套分工:HTML 管结构与内容(素坯),CSS 管外观(化妆师),JavaScript 管行为(操偶师)。标签三段式:开始标签 + 内容 + 结束标签,属性写在开始标签里。双击打开读的是 file:// 本地文件,访问网站是向服务器要文件(URL 与 HTTP,networking 模块深讲)。查看源代码看原文,Elements 看浏览器消化后的活结构——前端的第一双透视眼从这里开始用。

下一步

进入 HTML5 概述与核心特性:搞清楚「HTML5」这个 5 从哪来、它给网页补了哪些新能力,以及为什么它不是更难的 HTML,而是更明确的 HTML。