响应式网页设计范文详解

我们将构建一个典型的、现代的单页营销/作品集网站,这个例子将展示如何使用 HTML5语义标签CSS媒体查询现代CSS技术(如Flexbox和Grid)来创建一个在不同设备上都能完美显示的网页。

html响应式网页设计代码范文
(图片来源网络,侵删)

最终效果预览

  • 桌面端 (> 768px): 多列布局,导航栏在顶部,内容区域分块清晰。
  • 平板端 (768px - 992px): 布局开始收缩,但仍然是多列。
  • 手机端 (< 768px): 所有内容变为单列布局,导航栏变为“汉堡菜单”图标以节省空间。

HTML 代码 (index.html)

这是网页的骨架,我们使用了HTML5的语义化标签(如 <header>, <nav>, <main>, <section>, <footer>),这不仅有助于SEO,也让代码结构更清晰、更易于维护。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">响应式网页设计示例</title>
    <!-- 引入外部CSS文件 -->
    <link rel="stylesheet" href="style.css">
    <!-- 引入一个流行的图标库 (Font Awesome) -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
</head>
<body>
    <header>
        <div class="logo">
            <a href="#">MyLogo</a>
        </div>
        <nav>
            <ul class="nav-links">
                <li><a href="#home">首页</a></li>
                <li><a href="#about">lt;/a></li>
                <li><a href="#services">服务</a></li>
                <li><a href="#portfolio">作品集</a></li>
                <li><a href="#contact">联系</a></li>
            </ul>
            <!-- 汉堡菜单按钮,默认隐藏 -->
            <div class="burger">
                <div class="line1"></div>
                <div class="line2"></div>
                <div class="line3"></div>
            </div>
        </nav>
    </header>
    <main>
        <section id="home" class="hero">
            <div class="hero-content">
                <h1>欢迎来到我的响应式世界</h1>
                <p>这是一个展示现代响应式网页设计的示例,请尝试调整浏览器窗口大小,或在不同设备上查看效果。</p>
                <a href="#about" class="cta-button">了解更多</a>
            </div>
        </section>
        <section id="about" class="content-section">
            <h2>关于我们</h2>
            <p>这里是关于我们公司的介绍,我们专注于提供高质量的网页设计和开发服务,致力于为客户创造最佳的数字体验。</p>
        </section>
        <section id="services" class="content-section">
            <h2>我们的服务</h2>
            <div class="services-grid">
                <div class="service-card">
                    <i class="fas fa-code"></i>
                    <h3>网页开发</h3>
                    <p>使用最新的技术栈,构建快速、安全、可扩展的网站。</p>
                </div>
                <div class="service-card">
                    <i class="fas fa-mobile-alt"></i>
                    <h3>移动应用</h3>
                    <p>为iOS和Android平台开发原生和跨平台移动应用。</p>
                </div>
                <div class="service-card">
                    <i class="fas fa-paint-brush"></i>
                    <h3>UI/UX 设计</h3>
                    <p>以用户为中心,设计美观、直观且易用的界面。</p>
                </div>
            </div>
        </section>
        <section id="portfolio" class="content-section">
            <h2>作品集</h2>
            <p>这里展示我们的一些精选项目。</p>
        </section>
        <section id="contact" class="content-section">
            <h2>联系我们</h2>
            <p>有任何问题或合作意向,请随时与我们联系。</p>
            <form>
                <input type="text" placeholder="您的姓名">
                <input type="email" placeholder="您的邮箱">
                <textarea placeholder="您的留言"></textarea>
                <button type="submit">发送</button>
            </form>
        </section>
    </main>
    <footer>
        <p>&copy; 2025 我的响应式网站. 保留所有权利.</p>
    </footer>
    <!-- 引入外部JavaScript文件 -->
    <script src="script.js"></script>
</body>
</html>

CSS 代码 (style.css)

这是网页的样式表,是实现响应式设计的核心,我们将在这里使用 媒体查询 来针对不同屏幕尺寸应用不同的样式。

/* --- 全局样式和变量 --- */
:root {
    --primary-color: #007bff;
    --secondary-color: #6c757d;
    --background-color: #f4f4f4;
    --text-color: #333;
    --font-family: 'Arial', sans-serif;
}
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
html {
    scroll-behavior: smooth; /* 平滑滚动 */
}
body {
    font-family: var(--font-color);
    line-height: 1.6;
    background-color: var(--background-color);
    color: var(--text-color);
}
a {
    text-decoration: none;
    color: var(--primary-color);
}
h1, h2 {
    font-weight: bold;
    margin-bottom: 1rem;
}
section {
    padding: 4rem 2rem;
    text-align: center;
}
/* --- 布局容器 --- */
.container {
    width: 90%;
    max-width: 1100px;
    margin: auto;
}
/* --- 头部导航栏 --- */
header {
    background: #fff;
    position: fixed;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 1000;
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 5%;
}
.logo a {
    font-size: 1.5rem;
    font-weight: bold;
}
.nav-links {
    display: flex;
    list-style: none;
}
.nav-links li a {
    color: #333;
    padding: 1rem;
    display: block;
    transition: color 0.3s ease;
}
.nav-links li a:hover {
    color: var(--primary-color);
}
/* --- 汉堡菜单 --- */
.burger {
    display: none; /* 默认隐藏 */
    cursor: pointer;
}
.burger div {
    width: 25px;
    height: 3px;
    background-color: #333;
    margin: 5px;
    transition: all 0.3s ease;
}
/* --- 主要内容区 --- */
main {
    margin-top: 80px; /* 为固定导航栏留出空间 */
}
.hero {
    height: 100vh;
    background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('https://images.unsplash.com/photo-1551288049-bebda4e38f71?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1770&q=80') no-repeat center center/cover;
    color: white;
    display: flex;
    justify-content: center;
    align-items: center;
    text-align: center;
}
.hero-content h1 {
    font-size: 3rem;
    margin-bottom: 1rem;
}
.cta-button {
    display: inline-block;
    padding: 12px 24px;
    background: var(--primary-color);
    color: white;
    border-radius: 5px;
    margin-top: 1rem;
    transition: background 0.3s ease;
}
.cta-button:hover {
    background: #0056b3;
}
/* --- 服务网格布局 --- */
.services-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); /* 核心响应式布局 */
    gap: 2rem;
    margin-top: 2rem;
}
.service-card {
    background: #fff;
    padding: 2rem;
    border-radius: 8px;
    box-shadow: 0 4px 8px rgba(0,0,0,0.1);
    transition: transform 0.3s ease;
}
.service-card:hover {
    transform: translateY(-10px);
}
.service-card i {
    font-size: 2.5rem;
    color: var(--primary-color);
    margin-bottom: 1rem;
}
/* --- 表单样式 --- */
form {
    max-width: 600px;
    margin: 2rem auto;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}
form input, form textarea {
    width: 100%;
    padding: 12px;
    border: 1px solid #ddd;
    border-radius: 5px;
    font-family: inherit;
}
form button {
    padding: 12px;
    background: var(--primary-color);
    color: white;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    font-size: 1rem;
    transition: background 0.3s ease;
}
form button:hover {
    background: #0056b3;
}
/* --- 页脚 --- */
footer {
    background: #333;
    color: #fff;
    text-align: center;
    padding: 2rem;
    margin-top: 2rem;
}
/* ============================================
   响应式设计 (媒体查询)
   ============================================ */
/* --- 平板设备 (768px 及以下) --- */
@media screen and (max-width: 768px) {
    header {
        padding: 1rem 2%;
    }
    .nav-links {
        position: fixed;
        right: -100%; /* 初始状态在屏幕外 */
        top: 70px;
        flex-direction: column;
        background-color: #fff;
        width: 100%;
        text-align: center;
        transition: right 0.5s ease-in-out;
        box-shadow: 0 10px 27px rgba(0,0,0,0.05);
        padding: 2rem 0;
    }
    .nav-links li a {
        padding: 1rem;
    }
    .burger {
        display: block; /* 显示汉堡菜单 */
    }
    /* 汉堡菜单动画 - 激活状态 */
    .nav-active .nav-links {
        right: 0;
    }
    .nav-active .burger .line1 {
        transform: rotate(-45deg) translate(-5px, 6px);
    }
    .nav-active .burger .line2 {
        opacity: 0;
    }
    .nav-active .burger .line3 {
        transform: rotate(45deg) translate(-5px, -6px);
    }
    .hero-content h1 {
        font-size: 2.5rem;
    }
}
/* --- 手机设备 (480px 及以下) --- */
@media screen and (max-width: 480px) {
    section {
        padding: 3rem 1rem;
    }
    .hero-content h1 {
        font-size: 2rem;
    }
    .services-grid {
        grid-template-columns: 1fr; /* 强制变为单列 */
    }
}

JavaScript 代码 (script.js)

这个简单的脚本是用来实现“汉堡菜单”的点击交互功能,让导航栏在移动端可以平滑地展开和收起。

// 等待整个文档加载完成
document.addEventListener('DOMContentLoaded', () => {
    // 获取汉堡菜单按钮和导航链接列表
    const burger = document.querySelector('.burger');
    const nav = document.querySelector('.nav-links');
    // 为汉堡菜单按钮添加点击事件监听器
    burger.addEventListener('click', () => {
        // 切换 'nav-active' 类
        // 这个类在CSS中用于控制导航栏的显示/隐藏和动画
        nav.classList.toggle('nav-active');
    });
});

如何使用这些代码

  1. 创建文件: 创建三个文件,分别命名为 index.htmlstyle.cssscript.js,并将上面的代码分别复制进去。
  2. 放置图片: 在 index.html 中,<header> 标签内,我们使用了一张背景图片,你需要准备一张名为 your-hero-image.jpg 的图片,并确保它与 index.html 文件在同一个目录下,或者,你可以直接使用我提供的Unsplash链接。
  3. 打开文件: 用浏览器打开 index.html 文件,你可以通过拖动浏览器窗口的边缘来模拟不同设备的屏幕尺寸,观察网页布局的变化。

这个范文涵盖了响应式设计的几个关键点:

html响应式网页设计代码范文
(图片来源网络,侵删)
  1. <meta name="viewport">: 这是响应式设计的基石,它告诉浏览器如何控制页面的尺寸和缩放,确保在移动设备上正确渲染。
  2. 流式布局: 使用百分比()或 max-width 而不是固定的像素值来设置容器宽度,让内容能够根据浏览器窗口大小自适应。
  3. 弹性图片和媒体: 通过设置 max-width: 100%;height: auto;,确保图片和视频永远不会溢出它们的容器。
  4. 媒体查询: 这是响应式设计的核心工具,它允许你根据特定的条件(如屏幕宽度)应用不同的CSS样式,从而为不同设备优化布局。
  5. 现代CSS布局: 使用 FlexboxGrid 可以更轻松、更高效地创建复杂的响应式布局,而无需依赖浮动或定位。
  6. 移动优先: 虽然这个例子是“桌面优先”的(先写桌面样式,再通过媒体查询覆盖为移动样式),但“移动优先”(先写移动样式,再通过媒体查询增强桌面体验)也是一个非常流行的策略,通常被认为是更好的实践。

希望这个详细的范文能帮助你理解和实践响应式网页设计!