HTML5 & CSS3 网站设计全教程
这份教程将分为四个主要部分:

(图片来源网络,侵删)
- 第一部分:基础入门 - 了解 Web 是什么,以及 HTML 和 CSS 的角色。
- 第二部分:HTML5 深度解析 - 学习网页的“骨架”和“内容”。
- 第三部分:CSS3 精髓 - 学习如何为网页“穿上漂亮的衣服”。
- 第四部分:实战项目 - 将所学知识整合,动手创建一个完整的响应式网站。
第一部分:基础入门
1 什么是 Web?Web、HTML、CSS 的关系
想象一下建造一栋房子:
- Web (万维网):是整个城市和社区。
- HTML (超文本标记语言):是房子的结构,它定义了哪里是墙壁、哪里是门、哪里是窗户,在网页中,它定义了哪里是标题、哪里是段落、哪里是图片。
- CSS (层叠样式表):是房子的装修和设计,它定义了墙壁的颜色、家具的样式、窗帘的材质,在网页中,它定义了文字的颜色、字体、元素的布局、边距等。
核心关系:HTML 负责内容(What),CSS 负责表现(How),两者缺一不可,共同构成了我们看到的网页。
2 开发环境准备
你只需要一个文本编辑器和一个浏览器。
- 文本编辑器 (强烈推荐):
- Visual Studio Code (VS Code):功能强大,免费,是目前最受欢迎的编辑器,强烈推荐安装以下插件:
- Live Server:可以实时预览你的代码修改。
- Prettier:自动格式化代码,保持整洁。
- Sublime Text / Atom:也是优秀的轻量级编辑器。
- Visual Studio Code (VS Code):功能强大,免费,是目前最受欢迎的编辑器,强烈推荐安装以下插件:
- 浏览器:
- Google Chrome:开发者工具非常强大,是前端开发的首选。
3 你的第一个网页
- 在你的电脑上创建一个文件夹,命名为
my-first-website。 - 用 VS Code 打开这个文件夹。
- 在文件夹中创建一个新文件,命名为
index.html。 - 将以下代码复制并粘贴到
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>
</head>
<body>
<h1>你好,世界!</h1>
<p>这是我的第一个 HTML 页面。</p>
</body>
</html>
- 保存文件,在 VS Code 中右键点击
index.html,选择 "Open with Live Server",你的浏览器就会自动打开并显示这个页面。
代码解释:

(图片来源网络,侵删)
<!DOCTYPE html>:声明这是一个 HTML5 文档。<html>:根元素,所有其他元素都包含在其中。<head>:包含页面的元数据(数据的数据),如标题、字符编码、引入的 CSS 等,不会直接显示在页面上。<title>:显示在浏览器标签页上的标题。<body>:包含所有可见的页面内容,如标题、段落、图片等。<h1>,最重要的标题。<p>:段落。
第二部分:HTML5 深度解析
HTML5 不仅仅是新标签,它更语义化、更强大。
1 核心结构标签
HTML5 引入了许多语义化标签,让代码结构更清晰,对搜索引擎更友好。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">语义化结构</title>
</head>
<body>
<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>© 2025 我的网站. 保留所有权利.</p>
</footer>
</body>
</html>
<header>:页面或区域的头部。<nav>:导航链接区域。<main>:页面的主要内容,一个页面只有一个。<article>:独立的文章内容。<aside>:侧边栏,与主要内容相关但可以独立存在。<footer>:页面或区域的底部。
2 文本内容标签
<h1>(最重要) 到<h6>(最不重要)。- 段落:
<p>。 - 链接:
<a href="https://www.google.com">谷歌</a>。 - 图片:
<img src="image.jpg" alt="图片描述">。src是源路径,alt是替代文本,当图片无法显示时会显示,并且对 SEO 和屏幕阅读器至关重要。 - 列表:
- 无序列表:
<ul>(Unordered List) +<li>(List Item)。 - 有序列表:
<ol>(Ordered List) +<li>。 - 定义列表:
<dl>+<dt>(Term) +<dd>(Description)。
- 无序列表:
3 多媒体标签
HTML5 引入了原生支持音视频的标签,告别了 Flash。
- 视频:
<video><video width="320" height="240" controls> <source src="movie.mp4" type="video/mp4"> 您的浏览器不支持 video 标签。 </video> - 音频:
<audio><audio controls> <source src="audio.mp3" type="audio/mpeg"> 您的浏览器不支持 audio 标签。 </audio>
4 表单与输入
表单是用户与网站交互的核心。

(图片来源网络,侵删)
<form>:表单容器。action:表单提交到的服务器地址。method:提交方法,通常是GET(数据在 URL 中) 或POST(数据在请求体中,更安全)。
<input>:最常用的输入控件。type属性决定了输入框的类型:text(文本),password(密码),email(邮箱),number(数字),checkbox(复选框),radio(单选按钮),submit(提交按钮) 等。
<label>:为输入控件提供标签,提高可访问性。<button>:按钮。
示例:
<form action="/submit-form" method="post">
<div>
<label for="username">用户名:</label>
<input type="text" id="username" name="username" required>
</div>
<div>
<label for="password">密码:</label>
<input type="password" id="password" name="password" required>
</div>
<div>
<input type="checkbox" id="remember" name="remember">
<label for="remember">记住我</label>
</div>
<button type="submit">登录</button>
</form>
第三部分:CSS3 精髓
CSS3 赋予了网页无与伦比的视觉表现力。
1 如何引入 CSS
有三种方式,推荐使用第三种。
- 内联样式:直接写在 HTML 标签里,不推荐。
<p style="color: blue; font-size: 20px;">这是一个段落。</p>
- 内部样式表:写在
<head>的<style>标签里,适用于单页面。<head> <style> p { color: blue; font-size: 20px; } </style> </head> - 外部样式表 (推荐):创建一个
.css文件,然后在 HTML 中通过<link>引入,这是最佳实践,便于维护和复用。<!-- index.html --> <head> <link rel="stylesheet" href="styles.css"> </head>/* styles.css */ p { color: blue; font-size: 20px; }
2 CSS 选择器
选择器是 CSS 的核心,它告诉浏览器要对哪个元素进行样式设置。
- 元素选择器:
p { ... }(所有<p>标签)。 - 类选择器:
.class-name { ... }(所有class="class-name"的元素),最常用! - ID 选择器:
#id-name { ... }(唯一一个id="id-name"的元素),一个页面 ID 应唯一。 - 后代选择器:
div p { ... }(所有在<div>内部的<p>标签)。 - 伪类选择器:
hover,active,link,visited(用于链接的不同状态)。a:hover { color: red; text-decoration: none; }
3 盒模型
理解盒模型是布局的基础,每个 HTML 元素都可以看作一个盒子,由 content (内容), padding (内边距), border (边框), margin (外边距) 组成。
width和height只控制content区域的大小。box-sizing: border-box;是现代 Web 开发的标配!它让width和height包含content+padding+border,计算更直观。
.box {
width: 300px;
height: 200px;
padding: 20px;
border: 10px solid black;
/*
如果没有 box-sizing, 实际宽度会是 300 + 20*2 + 10*2 = 340px
如果设置了 box-sizing: border-box, 实际宽度就是 300px
*/
box-sizing: border-box;
}
4 布局
CSS3 提供了强大的布局工具。
Flexbox (弹性盒子):一维布局,非常适合做导航栏、居中内容、分配空间。
.container {
display: flex; /* 开启 Flexbox 布局 */
justify-content: space-between; /* 主轴对齐 */
align-items: center; /* 交叉轴对齐 */
}
.item {
flex-grow: 1; /* 占据可用空间 */
margin: 10px;
}
Grid (网格):二维布局,非常适合做整体页面布局、复杂的网格系统。
.grid-container {
display: grid; /* 开启 Grid 布局 */
grid-template-columns: 1fr 3fr 1fr; /* 三列,比例 1:3:1 */
grid-template-rows: auto 1fr auto; /* 三行,高度自适应 */
gap: 20px; /* 网格间距 */
}
.header {
grid-column: 1 / -1; /* 从第1列跨越到最后一列 */
}
5 响应式设计
让你的网站在不同尺寸的设备(手机、平板、桌面)上都有良好的显示效果。
- 视口:
<meta name="viewport" content="width=device-width, initial-scale=1.0;">,这是移动端响应式设计的基石。 - 媒体查询:根据设备的特性(如宽度)应用不同的 CSS 样式。
/* 默认样式(应用于所有设备) */
body {
font-size: 16px;
}
/* 当屏幕宽度小于等于 768px 时(平板和手机) */
@media (max-width: 768px) {
body {
font-size: 14px;
}
.container {
flex-direction: column; /* 将横向布局改为纵向 */
}
}
/* 当屏幕宽度小于等于 480px 时(手机) */
@media (max-width: 480px) {
body {
font-size: 12px;
}
}
6 CSS3 新特性
- 颜色:除了
color: red;,还可以使用rgba(),hsl()带透明度的颜色。 - 边框:
border-radius(圆角),box-shadow(阴影)。 - 文本:
text-shadow(文字阴影),@font-face(引入自定义字体)。 - 过渡与动画:
transition:让属性变化更平滑(如悬停时颜色渐变)。@keyframes和animation:创建复杂的动画。
第四部分:实战项目 - 个人作品集网站
我们将所有知识整合起来,创建一个简单的个人作品集网站。
项目结构
my-portfolio/
├── index.html
├── css/
│ └── style.css
└── images/
└── profile-pic.jpg
步骤 1: 创建 HTML 结构 (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>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<header>
<div class="container">
<h1>张三</h1>
<nav>
<ul>
<li><a href="#about">关于我</a></li>
<li><a href="#projects">项目</a></li>
<li><a href="#contact">联系我</a></li>
</ul>
</nav>
</div>
</header>
<main>
<section id="hero">
<div class="container">
<h2>你好,我是张三</h2>
<p>一名热爱创造优秀用户体验的前端开发工程师。</p>
<a href="#projects" class="btn">查看我的作品</a>
</div>
</section>
<section id="about">
<div class="container">
<h2>关于我</h2>
<p>这里是关于我的详细介绍...</p>
</div>
</section>
<section id="projects">
<div class="container">
<h2>我的项目</h2>
<div class="project-grid">
<div class="project-card">
<img src="https://via.placeholder.com/300x200" alt="项目1">
<h3>项目一</h3>
<p>项目一的描述。</p>
</div>
<div class="project-card">
<img src="https://via.placeholder.com/300x200" alt="项目2">
<h3>项目二</h3>
<p>项目二的描述。</p>
</div>
</div>
</div>
</section>
</main>
<footer>
<div class="container">
<p>© 2025 张三. All rights reserved.</p>
</div>
</footer>
</body>
</html>
步骤 2: 编写 CSS 样式 (css/style.css)
/* 全局样式和变量 */
:root {
--primary-color: #3498db;
--secondary-color: #2c3e50;
--text-color: #333;
--light-bg: #ecf0f1;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
line-height: 1.6;
color: var(--text-color);
}
.container {
max-width: 1100px;
margin: 0 auto;
padding: 0 20px;
}
/* 头部样式 */
header {
background-color: var(--secondary-color);
color: white;
padding: 1rem 0;
position: sticky;
top: 0;
}
header .container {
display: flex;
justify-content: space-between;
align-items: center;
}
header h1 {
font-size: 1.5rem;
}
header nav ul {
list-style: none;
display: flex;
}
header nav ul li a {
color: white;
text-decoration: none;
padding: 0.5rem 1rem;
transition: color 0.3s ease;
}
header nav ul li a:hover {
color: var(--primary-color);
}
区域 */
section {
padding: 4rem 0;
}
#hero {
background-color: var(--primary-color);
color: white;
text-align: center;
}
#hero h2 {
font-size: 2.5rem;
margin-bottom: 1rem;
}
#hero p {
font-size: 1.2rem;
margin-bottom: 2rem;
}
/* 按钮样式 */
.btn {
display: inline-block;
background-color: white;
color: var(--primary-color);
padding: 0.8rem 1.5rem;
border-radius: 5px;
text-decoration: none;
font-weight: bold;
transition: transform 0.3s ease;
}
.btn:hover {
transform: translateY(-3px);
}
/* 项目网格 */
.project-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
}
.project-card {
background-color: white;
border: 1px solid #ddd;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
transition: transform 0.3s ease;
}
.project-card:hover {
transform: translateY(-10px);
}
.project-card img {
width: 100%;
height: 200px;
object-fit: cover;
}
.project-card h3 {
padding: 1rem;
margin: 0;
}
.project-card p {
padding: 0 1rem 1rem;
color: #666;
}
/* 页脚样式 */
footer {
background-color: var(--secondary-color);
color: white;
text-align: center;
padding: 1.5rem 0;
}
/* 响应式设计 */
@media (max-width: 768px) {
header .container {
flex-direction: column;
}
header nav ul {
margin-top: 1rem;
}
#hero h2 {
font-size: 2rem;
}
}
步骤 3: 运行和调试
- 将你的个人照片放在
images文件夹中,并替换 HTML 中的img标签src。 - 确保所有文件路径正确。
- 在 VS Code 中用 Live Server 打开
index.html。 - 在浏览器中打开开发者工具(F12 或 Ctrl+Shift+I),调整窗口大小,观察响应式效果。
- 检查是否有样式错误或布局问题,并根据需要修改 CSS。
学习资源推荐
- MDN Web Docs (Mozilla Developer Network):最权威、最全面的 Web 技术文档,遇到任何问题,第一反应就是查 MDN。
- freeCodeCamp:提供免费的互动式编程课程,非常友好。
- W3Schools:另一个流行的在线教程和参考网站。
- CSS-Tricks:CSS 的各种技巧和深入文章。
- YouTube 频道:
- Traversy Media:高质量的前端教程。
- The Net Ninja精炼,易于理解。
总结与进阶
恭喜你!你已经掌握了 HTML5 和 CSS3 的核心知识,并完成了你的第一个实战项目。
下一步可以学习:
- JavaScript:为你的网页添加交互性,让按钮点击、表单验证等动态效果成为可能,这是成为前端开发者的下一步。
- CSS 预处理器:如 Sass 或 Less,它们增加了变量、嵌套、混合等特性,让 CSS 更易于维护。
- 前端框架:如 React, Vue, Angular,它们用于构建复杂的单页应用程序。
- 版本控制 Git:管理你的代码,方便协作和回滚。
学习是一个持续的过程,多动手,多看别人的代码,多思考,你很快就能成为一名优秀的前端开发者!
