本教程将采用 “现代、高效、实用” 的路线,使用业界主流的技术栈:
- HTML5: 语义化结构
- CSS3: 布局与样式(重点介绍 Flexbox 和 Grid)
- 原生 JavaScript: 交互功能
- 响应式设计: 适配各种设备
- VS Code: 代码编辑器
教程大纲
- 准备工作:搭建你的开发环境
- 第一步:规划与设计 - 心中有丘壑
- 第二步:搭建项目结构 - 筑好地基
- 第三步:编写 HTML 代码 - 搭建网站骨架
- 第四步:编写 CSS 代码 - 赋予网站血肉
- 1 全局样式与重置
- 2 布局:Flexbox 与 Grid 实战
- 3 组件化样式
- 4 响应式设计
- 第五步:编写 JavaScript 代码 - 注入灵魂
- 1 DOM 操作
- 2 事件监听
- 3 实现一个简单的交互效果
- 第六步:测试与优化 - 精益求精
- 第七步:部署上线 - 让世界看到你
- 进阶学习与资源
准备工作:搭建你的开发环境
在开始之前,你需要安装几个必备的工具:
- 代码编辑器: Visual Studio Code (VS Code) 是目前最受欢迎的免费编辑器,功能强大,插件丰富。
- 推荐插件:
Live Server: 一键启动本地服务器,实时预览你的网页。Prettier - Code formatter: 自动格式化代码,保持风格统一。Auto Rename Tag: 自动重配对的 HTML/XML 标签。
- 推荐插件:
- 现代浏览器: Google Chrome 或 Firefox,它们都拥有强大的开发者工具,是调试代码的利器。
- 版本控制 (可选但强烈推荐): Git 和 GitHub,用于管理你的代码版本,方便备份和协作。
安装好 VS Code 和浏览器后,你就可以开始了。
第一步:规划与设计 - 心中有丘壑
不要急着写代码!先用纸笔或设计工具(如 Figma, Sketch)规划一下你的网站。
思考以下几个问题:
- 网站目标: 是作品集、个人博客、简历展示,还是技术分享?
- : 你想在网站上展示什么?(关于我、我的项目、我的文章、联系方式)
- 目标用户: 谁会访问你的网站?他们想看到什么?
- 风格与调性: 简约、专业、活泼、艺术?
- 功能需求: 需要哪些交互?(点击导航平滑滚动、点击项目弹出详情、联系表单)
简单草图示例:
+--------------------------------------------------+
| [Logo] [导航菜单] |
+--------------------------------------------------+
| |
| 欢迎来到我的个人空间! |
| 我是一名前端开发工程师... |
| |
+--------------------------------------------------+
| |
| [项目 1] [项目 2] [项目 3] |
| |
+--------------------------------------------------+
| |
| 关于我 技能栈 联系我 |
| |
+--------------------------------------------------+
| |
| © 2025 我的名字 |
| |
+--------------------------------------------------+
第二步:搭建项目结构 - 筑好地基
一个好的文件结构能让你的项目井井有条,在你的电脑上创建一个新文件夹,my-personal-website,然后在其中创建以下文件和文件夹:
my-personal-website/
├── index.html # 主页
├── css/
│ └── style.css # 所有样式文件
├── js/
│ └── script.js # 所有脚本文件
├── images/
│ ├── profile.jpg # 个人头像
│ └── project-1.png # 项目图片
└── fonts/ # (可选) 自定义字体
第三步:编写 HTML 代码 - 搭建网站骨架
HTML 是网站的骨架,负责定义内容的结构,我们将使用 HTML5 的语义化标签,这有利于 SEO 和可访问性。
打开 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">
<!-- 可以在这里添加 Google Fonts 等 -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;600&display=swap" rel="stylesheet">
</head>
<body>
<!-- 头部/导航 -->
<header>
<div class="container">
<a href="#" class="logo">Logo</a>
<nav>
<ul>
<li><a href="#home">首页</a></li>
<li><a href="#about">lt;/a></li>
<li><a href="#projects">项目</a></li>
<li><a href="#contact">联系</a></li>
</ul>
</nav>
</div>
</header>
<main>
<!-- 英雄区域 -->
<section id="home" class="hero">
<div class="container">
<h1>你好,我是 <span>张三</span></h1>
<p>一名充满激情的前端开发工程师</p>
<a href="#projects" class="cta-button">查看我的作品</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="images/project-1.png" alt="项目1">
<h3>项目一</h3>
<p>项目描述...</p>
</div>
<div class="project-card">
<img src="images/project-2.png" alt="项目2">
<h3>项目二</h3>
<p>项目描述...</p>
</div>
</div>
</div>
</section>
<!-- 联系方式 -->
<section id="contact">
<div class="container">
<h2>联系我</h2>
<p>邮箱:your.email@example.com</p>
</div>
</section>
</main>
<!-- 页脚 -->
<footer>
<div class="container">
<p>© 2025 我的名字. All rights reserved.</p>
</div>
</footer>
<script src="js/script.js"></script>
</body>
</html>
关键点:
<!DOCTYPE html>: 声明文档类型。<meta name="viewport"...>: 至关重要! 确保网站在移动设备上能正确缩放。<link rel="stylesheet"...>: 引入 CSS 文件。<script src="...">: 引入 JS 文件,通常放在</body>之前,以确保页面内容先加载。- 语义化标签:
<header>,<nav>,<main>,<section>,<footer>等让代码更清晰。
第四步:编写 CSS 代码 - 赋予网站血肉
CSS 负责网站的视觉呈现,包括颜色、字体、间距和布局,我们来编写 css/style.css。
1 全局样式与重置
重置浏览器默认样式,确保在不同浏览器中表现一致。
/* css/style.css */
/* 1. 重置与基础样式 */
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
scroll-behavior: smooth; /* 平滑滚动 */
}
body {
font-family: 'Poppins', sans-serif; /* 使用我们引入的 Google Font */
line-height: 1.6;
color: #333;
background-color: #f4f4f4;
}
.container {
max-width: 1100px;
margin: 0 auto;
padding: 0 2rem;
}
h1, h2, h3 {
line-height: 1.2;
}
img {
max-width: 100%;
display: block;
}
2 布局:Flexbox 与 Grid 实战
这是现代 CSS 布局的精髓。
Flexbox: 适用于一维布局(行或列),比如导航栏、卡片列表。
/* 2. 布局 - Flexbox */
/* 导航栏 */
header {
background: #fff;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
position: sticky;
top: 0;
z-index: 100;
}
header .container {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem 2rem;
}
nav ul {
display: flex;
list-style: none;
}
nav ul li a {
color: #333;
text-decoration: none;
padding: 0.5rem 1rem;
transition: color 0.3s ease;
}
nav ul li a:hover {
color: #007bff;
}
/* 英雄区域 */
.hero {
height: 100vh; /* 视口高度 */
display: flex;
justify-content: center;
align-items: center;
text-align: center;
background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('https://source.unsplash.com/random/1600x900/?nature,water') no-repeat center center/cover;
color: #fff;
}
Grid: 适用于二维布局(行和列),比如项目展示网格。
/* 3. 布局 - Grid */
/* 项目展示 */
.project-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); /* 自适应列 */
gap: 2rem; /* 间距 */
}
.project-card {
background: #fff;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 5px 15px rgba(0,0,0,0.1);
transition: transform 0.3s ease;
}
.project-card:hover {
transform: translateY(-10px);
}
3 组件化样式
为每个部分编写具体的样式。
/* 4. 组件样式 */
.cta-button {
display: inline-block;
background: #007bff;
color: #fff;
padding: 0.8rem 1.5rem;
border-radius: 5px;
text-decoration: none;
font-weight: 600;
transition: background 0.3s ease;
}
.cta-button:hover {
background: #0056b3;
}
section {
padding: 4rem 0;
}
section h2 {
text-align: center;
margin-bottom: 2rem;
font-size: 2.5rem;
}
footer {
text-align: center;
padding: 2rem 0;
background: #333;
color: #fff;
}
4 响应式设计
使用媒体查询来适配不同屏幕尺寸。
/* 5. 响应式设计 */
@media (max-width: 768px) {
header .container {
flex-direction: column;
padding: 1rem;
}
nav ul {
margin-top: 1rem;
}
.hero h1 {
font-size: 2rem;
}
.project-grid {
grid-template-columns: 1fr; /* 在小屏幕上变为单列 */
}
}
第五步:编写 JavaScript 代码 - 注入灵魂
JS 让网站“活”起来,我们先实现一个简单的功能:点击导航菜单时,平滑滚动到对应部分。
打开 js/script.js,输入以下代码:
// js/script.js
document.addEventListener('DOMContentLoaded', () => {
// 获取所有导航链接
const navLinks = document.querySelectorAll('nav a[href^="#"]');
navLinks.forEach(link => {
link.addEventListener('click', function(e) {
e.preventDefault(); // 阻止默认的跳转行为
// 获取目标元素的ID
const targetId = this.getAttribute('href');
const targetElement = document.querySelector(targetId);
if (targetElement) {
// 计算滚动位置,考虑固定导航栏的高度
const headerHeight = document.querySelector('header').offsetHeight;
const targetPosition = targetElement.offsetTop - headerHeight;
// 平滑滚动到目标位置
window.scrollTo({
top: targetPosition,
behavior: 'smooth'
});
}
});
});
// 你可以在这里添加更多 JS 功能,
// - 滚动时改变导航栏样式
// - 图片懒加载
// - 表单验证
// - 动画效果
});
代码解释:
DOMContentLoaded: 确保整个 HTML 文档加载完毕后再执行 JS 代码。querySelectorAll('nav a[href^="#"]'): 选择所有href属性以 开头的导航链接。addEventListener('click', ...): 为每个链接添加点击事件监听器。e.preventDefault(): 阻止浏览器默认的锚点跳转行为。window.scrollTo(): 使用behavior: 'smooth'实现平滑滚动。
第六步:测试与优化 - 精益求精
网站基本完成了,现在是时候打磨它了。
- 功能测试:
- 所有链接都能正确跳转吗?
- 表单(如果有)能正常提交吗?
- 在不同浏览器(Chrome, Firefox, Edge, Safari)上显示是否正常?
- 响应式测试:
使用浏览器的开发者工具,模拟手机、平板、桌面等不同设备尺寸,检查布局是否错乱。
- 性能优化:
- 图片压缩: 使用 TinyPNG 等工具压缩图片,减小文件体积。
- 代码压缩: 使用在线工具或构建工具(如 Vite, Webpack)压缩 HTML, CSS, JS 文件。
第七步:部署上线 - 让世界看到你
本地开发完成后,你需要将网站部署到服务器上,让任何人都能通过互联网访问。
对于个人网站,有几个非常简单且免费的选择:
-
GitHub Pages:
- 优点: 免费,与 Git 无缝集成,非常适合静态网站。
- 步骤:
- 将你的项目代码上传到 GitHub 仓库。
- 进入仓库的
Settings->Pages。 - 在
Source中选择Deploy from a branch,选择main分支和/root目录。 - 点击
Save,几分钟后,你的网站就会通过https://<你的用户名>.github.io/<你的仓库名>访问。
-
Netlify / Vercel:
- 优点: 极其简单,支持持续集成,可以自动部署你的更新。
- 步骤 (以 Netlify 为例):
- 在 Netlify 官网注册并登录。
- 拖拽你的项目文件夹到网页上,或者连接你的 GitHub 仓库。
- Netlify 会自动检测到你的
index.html并部署。 - 它会提供一个随机的
.netlify.app域名,你也可以绑定自己的自定义域名。
-
购买域名和虚拟主机:
- 优点: 拥有自己的域名(如
www.zhangsan.com),更专业。 - 缺点: 需要付费。
- 步骤:
- 在 Namecheap, GoDaddy 等平台购买域名。
- 购买虚拟主机服务。
- 通过 FTP (如 FileZilla) 将你的网站文件上传到主机上。
- 优点: 拥有自己的域名(如
进阶学习与资源
当你掌握了基础后,可以探索更高级的技术:
- CSS 预处理器: Sass 或 Less,让你可以使用变量、嵌套、混合等高级功能,让 CSS 更易于维护。
- CSS 框架: Tailwind CSS (原子化 CSS) 或 Bootstrap (组件化 CSS),它们提供了大量预定义的类,能极大加速开发。
- JavaScript 框架: React, Vue, 或 Svelte,用于构建更复杂、更动态的单页应用。
- 构建工具: Vite 或 Webpack,用于自动化处理代码打包、压缩、热更新等开发流程。
推荐资源:
- MDN Web Docs: https://developer.mozilla.org/zh-CN/ (Web 技术的圣经,最权威、最全面的文档)
- freeCodeCamp: https://www.freecodecamp.org/chinese/ (免费的编程学习平台,互动式课程)
- CSS-Tricks: https://css-tricks.com/ (CSS 技巧和教程的宝库)
- JavaScript.info: https://zh.javascript.info/ (现代 JavaScript 教程)
也是最重要的一点:
开始动手,然后持续迭代! 不要追求一步到位,先做出一个最简可用的版本,然后不断根据反馈和自己的想法去添加新功能、优化设计,祝你制作出属于自己的、独一无二的个人网站!
