模板概览

这个模板将包含以下几个现代个人介绍网站常见的部分:

bootstrap个人介绍网页模板
(图片来源网络,侵删)
  • 导航栏:固定在顶部,方便用户快速跳转到不同部分。
  • 主横幅:包含你的名字、头衔、一张个人照片和联系方式。
  • 关于我:详细介绍你的背景、技能和故事。
  • 技能:以进度条或徽章的形式展示你的专业技能。
  • 项目/作品集:展示你引以为傲的项目,通常使用卡片布局。
  • 联系方式:提供多种联系你的方式,如邮箱、社交媒体等。
  • 页脚:包含版权信息等。

完整代码示例

您可以直接将以下所有代码复制到一个 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>
    <!-- Bootstrap 5 CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
    <!-- Bootstrap Icons (推荐使用) -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.2/font/bootstrap-icons.min.css">
    <style>
        /* 自定义样式 */
        :root {
            --bs-primary: #6f42c1; /* 自定义主题色 */
            --bs-secondary: #fd7e14;
        }
        body {
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
        }
        /* 导航栏样式 */
        .navbar {
            transition: all 0.3s ease;
        }
        .navbar-scrolled {
            box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
        }
        /* 主横幅样式 */
        #hero {
            background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('https://images.unsplash.com/photo-1557804522-7f314a5987ae?q=80&w=2070&auto=format&fit=crop') center/cover;
            color: white;
            height: 100vh;
            display: flex;
            align-items: center;
        }
        .hero-content h1 {
            font-size: 3.5rem;
            font-weight: 700;
        }
        /* 关于我部分样式 */
        #about {
            padding: 100px 0;
        }
        /* 技能部分样式 */
        .skill-item {
            margin-bottom: 1.5rem;
        }
        .skill-bar {
            height: 10px;
            background-color: #e9ecef;
            border-radius: 5px;
            overflow: hidden;
        }
        .skill-progress {
            height: 100%;
            background-color: var(--bs-primary);
            border-radius: 5px;
            width: 0; /* 初始为0,用于动画 */
            transition: width 1.5s ease-in-out;
        }
        /* 项目卡片样式 */
        .project-card {
            transition: transform 0.3s ease, box-shadow 0.3s ease;
            height: 100%;
        }
        .project-card:hover {
            transform: translateY(-10px);
            box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;
        }
        /* 页脚样式 */
        footer {
            background-color: #343a40;
            color: white;
            padding: 40px 0;
        }
    </style>
</head>
<body>
    <!-- 导航栏 -->
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
        <div class="container">
            <a class="navbar-brand" href="#">张三</a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarNav">
                <ul class="navbar-nav ms-auto">
                    <li class="nav-item">
                        <a class="nav-link active" href="#hero">首页</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#about">关于我</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#skills">技能</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#projects">项目</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#contact">联系我</a>
                    </li>
                </ul>
            </div>
        </div>
    </nav>
    <!-- 主横幅 -->
    <section id="hero">
        <div class="container">
            <div class="row hero-content">
                <div class="col-lg-6">
                    <h1 class="display-4 fw-bold">你好,我是张三</h1>
                    <p class="lead">一名充满激情的全栈开发工程师</p>
                    <p>我专注于创造优雅、高效且用户友好的数字体验,热爱学习新技术,并致力于用代码解决实际问题。</p>
                    <div class="mt-4">
                        <a href="#contact" class="btn btn-primary btn-lg me-2">联系我</a>
                        <a href="#projects" class="btn btn-outline-light btn-lg">查看项目</a>
                    </div>
                </div>
                <div class="col-lg-6 text-center">
                    <img src="https://i.pravatar.cc/300?u=zhangsan" alt="张三的头像" class="img-fluid rounded-circle border border-3 border-white shadow-lg">
                </div>
            </div>
        </div>
    </section>
    <!-- 关于我 -->
    <section id="about" class="bg-light">
        <div class="container">
            <h2 class="text-center mb-5">关于我</h2>
            <div class="row align-items-center">
                <div class="col-lg-6">
                    <p>我是一名拥有5年经验的全栈开发工程师,毕业于北京大学计算机科学系,在我的职业生涯中,我参与了多个大型项目的开发,从前端用户界面到后端架构设计,积累了丰富的实战经验。</p>
                    <p>我相信技术是改变世界的工具,而我的工作就是创造那些能够赋能他人的工具,我热衷于开源社区,是GitHub上的活跃贡献者,也是多个技术大会的演讲嘉宾。</p>
                </div>
                <div class="col-lg-6">
                    <ul class="list-group list-group-flush">
                        <li class="list-group-item d-flex justify-content-between align-items-center">
                            <span><i class="bi bi-geo-alt-fill text-primary"></i> 地点</span>
                            <span>北京, 中国</span>
                        </li>
                        <li class="list-group-item d-flex justify-content-between align-items-center">
                            <span><i class="bi bi-briefcase-fill text-primary"></i> 职业</span>
                            <span>全栈开发工程师</span>
                        </li>
                        <li class="list-group-item d-flex justify-content-between align-items-center">
                            <span><i class="bi bi-envelope-fill text-primary"></i> 邮箱</span>
                            <span>zhangsan@example.com</span>
                        </li>
                        <li class="list-group-item d-flex justify-content-between align-items-center">
                            <span><i class="bi bi-github text-primary"></i> GitHub</span>
                            <span><a href="https://github.com/zhangsan" target="_blank" class="text-decoration-none">github.com/zhangsan</a></span>
                        </li>
                    </ul>
                </div>
            </div>
        </div>
    </section>
    <!-- 技能 -->
    <section id="skills">
        <div class="container">
            <h2 class="text-center mb-5">专业技能</h2>
            <div class="row">
                <div class="col-md-6">
                    <div class="skill-item">
                        <h5>HTML5 / CSS3 / JavaScript (ES6+)</h5>
                        <div class="skill-bar">
                            <div class="skill-progress" data-width="95%"></div>
                        </div>
                    </div>
                    <div class="skill-item">
                        <h5>Bootstrap / Tailwind CSS</h5>
                        <div class="skill-bar">
                            <div class="skill-progress" data-width="90%"></div>
                        </div>
                    </div>
                    <div class="skill-item">
                        <h5>React / Vue.js</h5>
                        <div class="skill-bar">
                            <div class="skill-progress" data-width="85%"></div>
                        </div>
                    </div>
                </div>
                <div class="col-md-6">
                    <div class="skill-item">
                        <h5>Node.js / Express</h5>
                        <div class="skill-bar">
                            <div class="skill-progress" data-width="80%"></div>
                        </div>
                    </div>
                    <div class="skill-item">
                        <h5>Python / Django</h5>
                        <div class="skill-bar">
                            <div class="skill-progress" data-width="75%"></div>
                        </div>
                    </div>
                    <div class="skill-item">
                        <h5>MySQL / MongoDB</h5>
                        <div class="skill-bar">
                            <div class="skill-progress" data-width="85%"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>
    <!-- 项目 -->
    <section id="projects" class="bg-light">
        <div class="container">
            <h2 class="text-center mb-5">项目作品</h2>
            <div class="row g-4">
                <div class="col-md-4">
                    <div class="card project-card h-100 shadow-sm">
                        <img src="https://images.unsplash.com/photo-1551288049-bebda4e38f71?q=80&w=2070&auto=format&fit=crop" class="card-img-top" alt="项目1">
                        <div class="card-body">
                            <h5 class="card-title">电商平台重构</h5>
                            <p class="card-text">使用 React 和 Node.js 重构了一个老旧的电商平台,将页面加载速度提升了70%,并优化了用户购物体验。</p>
                            <a href="#" class="btn btn-primary">查看详情</a>
                        </div>
                    </div>
                </div>
                <div class="col-md-4">
                    <div class="card project-card h-100 shadow-sm">
                        <img src="https://images.unsplash.com/photo-1551434678-e076c223a692?q=80&w=2070&auto=format&fit=crop" class="card-img-top" alt="项目2">
                        <div class="card-body">
                            <h5 class="card-title">任务管理应用</h5>
                            <p class="card-text">一个功能强大的团队协作工具,支持实时通信、任务分配和进度追踪,采用 Vue.js 和 WebSocket 技术栈。</p>
                            <a href="#" class="btn btn-primary">查看详情</a>
                        </div>
                    </div>
                </div>
                <div class="col-md-4">
                    <div class="card project-card h-100 shadow-sm">
                        <img src="https://images.unsplash.com/photo-1551288049-bebda4e38f71?q=80&w=2070&auto=format&fit=crop" class="card-img-top" alt="项目3">
                        <div class="card-body">
                            <h5 class="card-title">数据可视化仪表盘</h5>
                            <p class="card-text">为企业客户开发了一个实时数据监控仪表盘,集成了多种图表,帮助管理者快速洞察业务数据。</p>
                            <a href="#" class="btn btn-primary">查看详情</a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>
    <!-- 联系我 -->
    <section id="contact">
        <div class="container">
            <h2 class="text-center mb-5">联系我</h2>
            <div class="row justify-content-center">
                <div class="col-md-8">
                    <form id="contactForm">
                        <div class="row g-3">
                            <div class="col-md-6">
                                <label for="name" class="form-label">姓名</label>
                                <input type="text" class="form-control" id="name" required>
                            </div>
                            <div class="col-md-6">
                                <label for="email" class="form-label">邮箱</label>
                                <input type="email" class="form-control" id="email" required>
                            </div>
                            <div class="col-12">
                                <label for="subject" class="form-label">主题</label>
                                <input type="text" class="form-control" id="subject" required>
                            </div>
                            <div class="col-12">
                                <label for="message" class="form-label">留言</label>
                                <textarea class="form-control" id="message" rows="5" required></textarea>
                            </div>
                            <div class="col-12 text-center">
                                <button type="submit" class="btn btn-primary btn-lg">发送消息</button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </section>
    <!-- 页脚 -->
    <footer>
        <div class="container text-center">
            <p>&copy; 2025 张三. All Rights Reserved.</p>
            <div>
                <a href="#" class="text-white me-3"><i class="bi bi-github fs-4"></i></a>
                <a href="#" class="text-white me-3"><i class="bi bi-linkedin fs-4"></i></a>
                <a href="#" class="text-white me-3"><i class="bi bi-twitter fs-4"></i></a>
                <a href="#" class="text-white"><i class="bi bi-envelope fs-4"></i></a>
            </div>
        </div>
    </footer>
    <!-- Bootstrap 5 JS Bundle with Popper -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
    <script>
        // 导航栏滚动效果
        window.addEventListener('scroll', function() {
            const navbar = document.querySelector('.navbar');
            if (window.scrollY > 50) {
                navbar.classList.add('navbar-scrolled');
            } else {
                navbar.classList.remove('navbar-scrolled');
            }
        });
        // 技能条动画 (使用 Intersection Observer API)
        document.addEventListener('DOMContentLoaded', function() {
            const skillBars = document.querySelectorAll('.skill-progress');
            const observer = new IntersectionObserver((entries) => {
                entries.forEach(entry => {
                    if (entry.isIntersecting) {
                        const width = entry.target.getAttribute('data-width');
                        entry.target.style.width = width;
                        observer.unobserve(entry.target); // 动画执行一次后停止观察
                    }
                });
            }, { threshold: 0.5 }); // 当元素50%可见时触发
            skillBars.forEach(bar => {
                observer.observe(bar);
            });
        });
        // 表单提交处理 (示例,实际需要后端支持)
        document.getElementById('contactForm').addEventListener('submit', function(e) {
            e.preventDefault();
            // 这里可以添加表单验证和提交逻辑
            alert('感谢您的留言!我会尽快回复您。');
            this.reset(); // 重置表单
        });
        // 平滑滚动
        document.querySelectorAll('a[href^="#"]').forEach(anchor => {
            anchor.addEventListener('click', function (e) {
                e.preventDefault();
                const target = document.querySelector(this.getAttribute('href'));
                if (target) {
                    target.scrollIntoView({
                        behavior: 'smooth',
                        block: 'start'
                    });
                }
            });
        });
    </script>
</body>
</html>

代码解析

HTML 结构

  • 语义化标签:使用了 <header>, <main>, <section>, <footer> 等HTML5语义化标签,有助于SEO和代码可读性。
  • Bootstrap 布局
    • 使用 .container 作为内容容器,提供响应式布局。
    • 使用 .row.col-* 类来创建灵活的网格布局,轻松实现多栏效果。
  • 组件
    • Navbar:使用 navbar 组件创建了固定在顶部的导航栏,并包含折叠菜单,适配移动端。
    • Card:在项目部分使用 card 组件来展示每个项目,包含图片、标题、描述和按钮。
    • Button:使用了多种样式的按钮(btn-primary, btn-outline-light, btn-lg)来增强视觉效果。
    • Form:在联系部分使用了 form 组件,并配合 form-label, form-control 等类来美化表单元素。
  • 图标:引入了 Bootstrap Icons,这是一个非常方便的图标库,可以直接通过 <i> 标签使用。

CSS 样式

  • 自定义变量:在 <style> 标签开头使用 root 定义了CSS变量 --bs-primary,方便全局统一管理主题色。
  • 滚动效果.navbar-scrolled 类在页面滚动时添加,通过 box-shadow 增加导航栏的立体感。
  • 渐变背景:主横幅部分使用 linear-gradient 和背景图片叠加,创造出更具视觉冲击力的效果。
  • 悬停动画:项目卡片 .project-card 在鼠标悬停时有 transform: translateY(-10px)box-shadow 变化,提升了交互体验。
  • 技能条动画.skill-progress 的初始宽度为0,通过JS在滚动到视口时动态设置其宽度,形成进度条填充的动画。

JavaScript 交互

  • 导航栏滚动监听:监听 window.scroll 事件,根据滚动距离动态为导航栏添加/移除样式。
  • 技能条动画 (Intersection Observer):这是现代浏览器提供的高性能API,用于检测元素是否进入视口,比传统的 scroll 事件监听更高效,性能更好,当用户滚动到“技能”部分时,技能条会自动开始填充动画。
  • 表单提交:阻止了表单的默认提交行为,并弹出一个提示框,在实际项目中,这里应该通过 fetchaxios 将表单数据发送到服务器。
  • 平滑滚动:点击导航链接时,页面会平滑滚动到对应部分,而不是瞬间跳转,体验更好。

高级玩法与定制建议

  1. 使用 SASS/SCSS

    • 对于更复杂的项目,建议将 CSS 编写成 SASS/SCSS,Bootstrap 本身就是用 SASS 编写的,你可以通过覆盖其变量(如 $primary, $font-size-base)来深度定制主题,而不仅仅是修改单个元素。
  2. 添加动态效果库

    • 可以集成 AOS (Animate On Scroll) 库,为页面元素添加更多精美的滚动动画效果。
    • 使用 GSAP (GreenSock Animation Platform) 创建更复杂、高性能的交互动画。
  3. 部署上线

    bootstrap个人介绍网页模板
    (图片来源网络,侵删)
    • 将你的 index.html 以及相关的 css, js, images 文件上传到任何静态网站托管服务,如 Netlify, Vercel, GitHub Pages阿里云OSS,这些服务通常支持一键部署,并自动分配一个 https:// 开头的域名。
  4. 集成简历/CV

    在“关于我”或单独的“简历”部分,可以嵌入一个 PDF 版本的简历,供用户下载。

  5. 博客/文章部分

    如果你想展示你的技术文章,可以增加一个“博客”部分,使用卡片列表展示你的文章标题、摘要和发布日期。

    bootstrap个人介绍网页模板
    (图片来源网络,侵删)
  6. 主题切换 (深色/浅色模式)

    可以利用 Bootstrap 5 内置的暗色模式支持,添加一个切换按钮,让用户可以选择自己喜欢的主题。

希望这份详细的模板和解析能帮助你快速搭建出属于自己的专业个人介绍网站!