HTML5 与 CSS3 学习路线图
在学习之前,我们先理清一个核心概念:

- HTML (HyperText Markup Language):网页的骨架,它负责定义网页的结构和内容,比如哪里是标题、哪里是段落、哪里是图片,HTML 使用标签(如
<h1>,<p>,<img>)来标记内容。 - CSS (Cascading Style Sheets):网页的化妆师,它负责描述网页的样式和外观,比如文字的颜色、大小、字间距,元素的布局、背景颜色、边框等,它使用选择器(如
h1,.class,#id)来应用样式。 - JavaScript:网页的交互和大脑,它负责实现网页的动态效果和交互逻辑,比如点击按钮弹出提示、制作轮播图、表单验证等。(本教程暂不涉及,但它是前端开发的必备技能)
学习顺序:先学 HTML5 搭建结构,再学 CSS3 美化页面。
第一部分:HTML5 基础教程
HTML5 是 HTML 的最新版本,它引入了许多语义化标签和新的功能,让网页结构更清晰、功能更强大。
第 1 章:HTML 简介与环境搭建
-
什么是 HTML?
- 超文本标记语言,不是编程语言,而是一种标记语言。
- 超文本:可以包含文本、图片、链接、音频、视频等。
- 标记语言:用标签来标记内容的含义。
-
HTML5 文档基本结构 每一个 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> <!-- 这里是网页的可见内容 --> <h1>你好,世界!</h1> <p>这是一个段落。</p> </body> </html><!DOCTYPE html>:声明文档类型,告诉浏览器这是一个 HTML5 文档。<html>:根元素,包裹整个页面的内容。<head>:头部,包含页面的元数据,这些内容不会直接显示在页面上。<meta charset="UTF-8">:字符编码声明,防止中文乱码。<meta name="viewport"...>:视口标签,用于响应式网页设计。<title>,显示在浏览器标签页上。
<body>:主体,包含所有在浏览器中可见的内容。
-
如何编写和运行 HTML?
- 工具:任何文本编辑器都可以,如 VS Code(强烈推荐,有代码高亮和提示功能)、Sublime Text、Notepad++。
- 步骤:
- 创建一个新文件,命名为
index.html。 - 将上面的基本结构复制进去。
- 保存文件。
- 用浏览器(如 Chrome, Firefox, Edge)打开这个文件,即可看到效果。
- 创建一个新文件,命名为
第 2 章:HTML 常用标签
这是 HTML 的核心,你需要熟悉这些标签的作用。
-
标签
<h1>-<h6>标签,<h1>是最重要的标题。<p>:段落标签。<strong>或<b>:加粗文本(<strong>语义更强,表示重要性)。<em>或<i>:斜体文本(<em>语义更强,表示强调)。<br>:换行标签(单标签)。<hr>:水平分割线(单标签)。<a>:超链接标签,href属性指定链接地址。<a href="https://www.google.com">访问 Google</a>
-
列表标签
(图片来源网络,侵删)- 无序列表:
<ul>(Unordered List) +<li>(List Item)<ul> <li>苹果</li> <li>香蕉</li> <li>橙子</li> </ul> - 有序列表:
<ol>(Ordered List) +<li><ol> <li>第一步</li> <li>第二步</li> <li>第三步</li> </ol>
- 无序列表:
-
图片和媒体标签
<img>:图片标签,src属性指定图片路径,alt属性为图片无法显示时的替代文本(非常重要!)。<img src="image.jpg" alt="一张美丽的风景图">
<video>:视频标签,src指定视频源,controls属性显示播放控件。<video src="movie.mp4" controls width="400"></video>
<audio>:音频标签,src指定音频源,controls属性显示播放控件。<audio src="song.mp3" controls></audio>
-
HTML5 语义化标签 HTML5 引入了一组新的标签,它们让页面结构更清晰,对搜索引擎和屏幕阅读器更友好。
<header>:页面或区域的头部。<nav>:导航链接区域。<main>:页面的主要内容(一个页面只应有一个<main>)。<article>:独立的文章内容,如博客、新闻。<section>:文档中的一个区域,通常包含标题。<aside>:侧边栏或与主要内容相关但独立的内容。<footer>:页面或区域的底部。
示例结构:
<header> <h1>网站标题</h1> <nav>导航菜单</nav> </header> <main> <article> <h2>文章标题</h2> <p>文章内容...</p> </article> </main> <aside> <h3>相关链接</h3> <ul>...</ul> </aside> <footer> <p>© 2025 版权所有</p> </footer> -
表单标签 表单用于收集用户输入。
<form>:表单容器,action属性指定提交地址,method指定提交方法(通常是get或post)。<input>:输入框,通过type属性定义不同类型的输入。type="text":文本输入框type="password":密码输入框type="submit":提交按钮type="radio":单选按钮type="checkbox":复选框type="email":邮箱输入框(HTML5 新增,有简单验证功能)
<label>:为输入框提供标签,for属性关联到输入框的id。<textarea>:多行文本输入框。<select>和<option>:下拉列表。
示例:
<form action="/submit" method="post"> <label for="username">用户名:</label> <input type="text" id="username" name="username"><br><br> <label for="password">密码:</label> <input type="password" id="password" name="password"><br><br> <label for="hobby">爱好:</label> <input type="checkbox" id="hobby" name="hobby" value="reading"> 阅读 <input type="checkbox" id="hobby" name="hobby" value="sports"> 运动<br><br> <input type="submit" value="提交"> </form>
第二部分:CSS3 基础教程
CSS3 让网页变得美观,它通过选择器找到 HTML 元素,然后为其应用样式。
第 3 章:CSS 简介与引入方式
-
什么是 CSS?
- 层叠样式表,用于控制网页的样式和布局。
- 层叠:当多个样式规则应用于同一个元素时,有特定的优先级规则来决定哪个样式生效。
-
CSS 的三种引入方式
- 内联样式:直接写在 HTML 标签的
style属性中,不推荐,因为内容和样式混合,难以维护。<p style="color: blue; font-size: 20px;">这是一个蓝色的段落。</p>
- 内部样式表:写在 HTML 文件的
<head>标签内的<style>标签中,适用于单个页面的样式。<head> <style> p { color: red; } </style> </head> - 外部样式表(最推荐):将 CSS 代码写在一个单独的
.css文件中,然后在 HTML 文件中通过<link>标签引入,这是最佳实践,实现了内容与样式的完全分离。styles.css文件内容:p { color: green; }index.html文件内容:<head> <link rel="stylesheet" href="styles.css"> </head>
- 内联样式:直接写在 HTML 标签的
第 4 章:CSS 选择器
选择器是 CSS 的核心,它告诉浏览器要对哪个元素进行样式设置。
-
基本选择器
- 元素选择器:根据标签名选择。
p { color: black; } /* 所有 <p> 标签 */ - 类选择器:根据元素的
class属性选择,前面加一个点 ,一个元素可以有多个类。<p class="highlight">这个段落有高亮样式。</p>
.highlight { background-color: yellow; } /* 所有 class="highlight" 的元素 */ - ID 选择器:根据元素的
id属性选择,前面加一个井号 ,一个页面的id必须是唯一的。<p id="intro">这是介绍段落。</p>
#intro { font-size: 24px; } /* id="intro" 的元素 */ - 通配符选择器:选择所有元素。
* { margin: 0; padding: 0; } /* 清除所有元素的默认外边距和内边距 */
- 元素选择器:根据标签名选择。
-
组合选择器
- 后代选择器:选择某个元素内部的所有后代元素(不限于子元素),用空格分隔。
div p { color: blue; } /* 选择所有在 <div> 内部的 <p> 标签 */ - 子选择器:只选择某个元素的直接子元素,用
>分隔。div > p { color: red; } /* 只选择 <div> 的直接子元素 <p> */ - 相邻兄弟选择器:选择某个元素之后紧邻的兄弟元素,用 分隔。
h1 + p { color: green; } /* 选择紧接在 <h1> 后面的第一个 <p> 标签 */
- 后代选择器:选择某个元素内部的所有后代元素(不限于子元素),用空格分隔。
第 5 章:CSS 常用属性
-
文本属性
color:文本颜色(如red,#ff0000,rgb(255, 0, 0))。font-size:字体大小(如16px,2em)。font-family:字体族(如"Microsoft YaHei", Arial, sans-serif)。font-weight:字体粗细(如bold,normal,700)。text-align:文本对齐方式(left,center,right)。line-height:行高。text-decoration:文本装饰(none,underline,line-through)。
-
盒模型 这是 CSS 布局的基础,每个 HTML 元素都可以看作一个矩形的盒子,包含:
- Content (内容):元素的实际内容。
- Padding (内边距)与边框之间的空间。
- Border (边框)和内边距的线。
- Margin (外边距):盒子与其他盒子之间的空间。
div { width: 200px; /* 内容宽度 */ height: 100px; /* 内容高度 */ padding: 20px; /* 内边距 */ border: 1px solid black; /* 边框 */ margin: 10px; /* 外边距 */ /* box-sizing: border-box; (非常重要,见下文) */ }box-sizing属性:content-box(默认):width和height只包含内容区域。padding和border会增加元素的总宽度/高度。border-box(强烈推荐):width和height包含content,padding, 和border,设置padding和border不会影响元素的总尺寸,只会压缩内容区域,这让布局变得非常直观。
-
背景属性
background-color:背景颜色。background-image:背景图片。background-repeat:背景图片平铺方式(repeat,no-repeat,repeat-x,repeat-y)。background-position:背景图片位置(center,top left等)。background-size:背景图片大小(cover,contain,100px 100px)。- 简写:
background: color image repeat position / size;
-
浮动 浮动是早期实现布局的主要方式,Flexbox 和 Grid 更常用,但理解它对维护旧代码很重要。
float: left;或float: right;:使元素脱离正常文档流,向左或向右浮动,允许文本和内联元素环绕它。- 清除浮动:当父容器内所有子元素都浮动后,父容器会“塌陷”(高度为0),需要清除浮动来恢复父容器高度。
- 方法:在浮动元素后添加一个空元素,并设置
clear: both;,或者使用更现代的:after伪元素清除法。
- 方法:在浮动元素后添加一个空元素,并设置
第 6 章:CSS3 新特性与布局
CSS3 带来了革命性的变化,让网页效果更丰富,布局更简单。
-
选择器增强
- 属性选择器:根据属性值选择元素。
input[type="text"] { ... } /* 选择 type 为 text 的 input */ div[class^="box-"] { ... } /* 选择 class 以 "box-" 开头的 div */ - 伪类:用于定义元素的特殊状态。
hover:鼠标悬停时。active:鼠标点击时。focus:元素获得焦点时(如输入框)。nth-child(n):选择其父元素的第 n 个子元素。first-child,last-child:选择第一个/最后一个子元素。
- 属性选择器:根据属性值选择元素。
-
Flexbox (弹性盒布局) 一维布局模型,非常适合用于在行或列中排列项目,它是现代网页布局的基石。
- 容器属性:设置在父元素上。
display: flex;:将容器定义为弹性容器。flex-direction:主轴方向(row,column)。justify-content:主轴对齐方式(flex-start,center,space-between,space-around)。align-items:交叉轴对齐方式(stretch,center,flex-start,flex-end)。flex-wrap:是否换行(nowrap,wrap)。
- 项目属性:设置在子元素上。
flex-grow:项目的放大比例。flex-shrink:项目的缩小比例。align-self:允许单个项目有与其他项目不一样的对齐方式。
示例:一个简单的居中卡片
<div class="container"> <div class="card">我居中了!</div> </div>.container { display: flex; justify-content: center; /* 水平居中 */ align-items: center; /* 垂直居中 */ height: 100vh; /* 让容器和视口一样高 */ } .card { width: 200px; height: 100px; background: #eee; border-radius: 8px; } - 容器属性:设置在父元素上。
-
Grid (网格布局) 二维布局模型,非常适合复杂的页面整体布局,它将容器划分为行和列。
- 容器属性:
display: grid;:定义网格容器。grid-template-columns/grid-template-rows:定义列和行的大小。grid-template-columns: 1fr 2fr 1fr;:定义三列,第一列和第三列宽度相等,第二列是它们的2倍。grid-template-columns: repeat(3, 1fr);:重复创建3个等宽的列。
gap:设置网格之间的间距。
- 项目属性:
grid-column-start/grid-column-end:指定项目占据的列。grid-row-start/grid-row-end:指定项目占据的行。grid-area:简写属性,可以指定项目占据的区域。
示例:一个经典的三栏布局
<div class="grid-layout"> <header>Header</header> <main>Main Content</main> <aside>Sidebar</aside> <footer>Footer</footer> </div>.grid-layout { display: grid; /* 定义三列:侧边栏固定宽度,内容区自适应,页脚占满宽度 */ grid-template-areas: "header header" "sidebar main" "footer footer"; grid-template-columns: 200px 1fr; grid-template-rows: auto 1fr auto; height: 100vh; } header { grid-area: header; background: lightblue; } main { grid-area: main; background: lightgreen; } aside { grid-area: sidebar; background: lightcoral; } footer { grid-area: footer; background: lightyellow; } - 容器属性:
-
其他 CSS3 特性
- 过渡:
transition,让属性变化在一定时间内平滑完成。button { background: blue; transition: background 0.3s ease; } button:hover { background: red; } - 变换:
transform,对元素进行旋转、缩放、移动或倾斜。img:hover { transform: scale(1.1); /* 鼠标悬停时放大1.1倍 */ } - 动画:
animation,定义更复杂的、多步骤的动画效果。 - 颜色:
rgba(),hsl()带透明度的颜色。 - 阴影:
box-shadow(元素阴影),text-shadow(文字阴影)。 - 圆角:
border-radius。
- 过渡:
第三部分:学习资源与进阶
在线互动教程
- freeCodeCamp:非常棒的免费互动学习平台,有完整的 HTML, CSS, JavaScript 课程,边学边练。
- MDN Web Docs (Mozilla Developer Network):Web 开发者的“圣经”,权威、全面、详尽,适合查阅具体知识点。
- W3Schools:简单易懂,适合快速入门和查询。
- Codecademy:互动式学习体验很好,部分课程收费。
书籍推荐
- 《CSS 权威指南》:CSS 领域的经典之作,内容详尽。
- 《Head First HTML 与 CSS》:采用独特的学习方式,适合零基础入门。
进阶方向
- 响应式 Web 设计:学习使用媒体查询 (
@media),让你的网页在不同尺寸的设备(手机、平板、桌面)上都有良好的显示效果。 - CSS 预处理器:学习 Sass 或 Less,它们为 CSS 增加了变量、嵌套、混合等功能,让 CSS 更易于维护和扩展。
- CSS 框架:学习使用 Bootstrap 或 Tailwind CSS,它们提供了大量预定义的样式和组件,可以极大提高开发效率。
- JavaScript:学习 JavaScript,让你的网页“活”起来,实现真正的交互功能。
实践项目
- 个人简历网站:练习所有基础标签和布局。
- 博客页面:练习文章列表、评论区的布局。
- 产品介绍页:练习复杂的图文混排和卡片式布局。
- 响应式导航菜单:练习媒体查询和 Flexbox/Grid 布局。
也是最重要的一点:多看、多练、多思考。
- 多看:访问你喜欢的网站,使用浏览器的“开发者工具”(按 F12)去查看它们的 HTML 结构和 CSS 样式,学习别人的实现方式。
- 多练:教程看得再多,不如自己动手写一个页面,遇到问题,学会使用搜索引擎(Google, Stack Overflow)。
- 多思考:理解“为什么”这么设计,而不仅仅是“怎么”实现。
祝你学习愉快,早日成为前端高手!
