本教程将采用 “现代、高效、实用” 的路线,使用业界主流的技术栈:

  • HTML5: 语义化结构
  • CSS3: 布局与样式(重点介绍 Flexbox 和 Grid)
  • 原生 JavaScript: 交互功能
  • 响应式设计: 适配各种设备
  • VS Code: 代码编辑器

教程大纲

  1. 准备工作:搭建你的开发环境
  2. 第一步:规划与设计 - 心中有丘壑
  3. 第二步:搭建项目结构 - 筑好地基
  4. 第三步:编写 HTML 代码 - 搭建网站骨架
  5. 第四步:编写 CSS 代码 - 赋予网站血肉
    • 1 全局样式与重置
    • 2 布局:Flexbox 与 Grid 实战
    • 3 组件化样式
    • 4 响应式设计
  6. 第五步:编写 JavaScript 代码 - 注入灵魂
    • 1 DOM 操作
    • 2 事件监听
    • 3 实现一个简单的交互效果
  7. 第六步:测试与优化 - 精益求精
  8. 第七步:部署上线 - 让世界看到你
  9. 进阶学习与资源

准备工作:搭建你的开发环境

在开始之前,你需要安装几个必备的工具:

  • 代码编辑器: Visual Studio Code (VS Code) 是目前最受欢迎的免费编辑器,功能强大,插件丰富。
    • 推荐插件:
      • Live Server: 一键启动本地服务器,实时预览你的网页。
      • Prettier - Code formatter: 自动格式化代码,保持风格统一。
      • Auto Rename Tag: 自动重配对的 HTML/XML 标签。
  • 现代浏览器: Google ChromeFirefox,它们都拥有强大的开发者工具,是调试代码的利器。
  • 版本控制 (可选但强烈推荐): GitGitHub,用于管理你的代码版本,方便备份和协作。

安装好 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>&copy; 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 功能,
    // - 滚动时改变导航栏样式
    // - 图片懒加载
    // - 表单验证
    // - 动画效果
});

代码解释:

  1. DOMContentLoaded: 确保整个 HTML 文档加载完毕后再执行 JS 代码。
  2. querySelectorAll('nav a[href^="#"]'): 选择所有 href 属性以 开头的导航链接。
  3. addEventListener('click', ...): 为每个链接添加点击事件监听器。
  4. e.preventDefault(): 阻止浏览器默认的锚点跳转行为。
  5. window.scrollTo(): 使用 behavior: 'smooth' 实现平滑滚动。

第六步:测试与优化 - 精益求精

网站基本完成了,现在是时候打磨它了。

  • 功能测试:
    • 所有链接都能正确跳转吗?
    • 表单(如果有)能正常提交吗?
    • 在不同浏览器(Chrome, Firefox, Edge, Safari)上显示是否正常?
  • 响应式测试:

    使用浏览器的开发者工具,模拟手机、平板、桌面等不同设备尺寸,检查布局是否错乱。

  • 性能优化:
    • 图片压缩: 使用 TinyPNG 等工具压缩图片,减小文件体积。
    • 代码压缩: 使用在线工具或构建工具(如 Vite, Webpack)压缩 HTML, CSS, JS 文件。

第七步:部署上线 - 让世界看到你

本地开发完成后,你需要将网站部署到服务器上,让任何人都能通过互联网访问。

对于个人网站,有几个非常简单且免费的选择:

  1. GitHub Pages:

    • 优点: 免费,与 Git 无缝集成,非常适合静态网站。
    • 步骤:
      1. 将你的项目代码上传到 GitHub 仓库。
      2. 进入仓库的 Settings -> Pages
      3. Source 中选择 Deploy from a branch,选择 main 分支和 /root 目录。
      4. 点击 Save,几分钟后,你的网站就会通过 https://<你的用户名>.github.io/<你的仓库名> 访问。
  2. Netlify / Vercel:

    • 优点: 极其简单,支持持续集成,可以自动部署你的更新。
    • 步骤 (以 Netlify 为例):
      1. 在 Netlify 官网注册并登录。
      2. 拖拽你的项目文件夹到网页上,或者连接你的 GitHub 仓库。
      3. Netlify 会自动检测到你的 index.html 并部署。
      4. 它会提供一个随机的 .netlify.app 域名,你也可以绑定自己的自定义域名。
  3. 购买域名和虚拟主机:

    • 优点: 拥有自己的域名(如 www.zhangsan.com),更专业。
    • 缺点: 需要付费。
    • 步骤:
      1. 在 Namecheap, GoDaddy 等平台购买域名。
      2. 购买虚拟主机服务。
      3. 通过 FTP (如 FileZilla) 将你的网站文件上传到主机上。

进阶学习与资源

当你掌握了基础后,可以探索更高级的技术:

  • CSS 预处理器: SassLess,让你可以使用变量、嵌套、混合等高级功能,让 CSS 更易于维护。
  • CSS 框架: Tailwind CSS (原子化 CSS) 或 Bootstrap (组件化 CSS),它们提供了大量预定义的类,能极大加速开发。
  • JavaScript 框架: React, Vue, 或 Svelte,用于构建更复杂、更动态的单页应用。
  • 构建工具: ViteWebpack,用于自动化处理代码打包、压缩、热更新等开发流程。

推荐资源:

也是最重要的一点:

开始动手,然后持续迭代! 不要追求一步到位,先做出一个最简可用的版本,然后不断根据反馈和自己的想法去添加新功能、优化设计,祝你制作出属于自己的、独一无二的个人网站!