在提供代码之前,我们先总结一下制作 H5 自适应手机端页面的几个核心要点,这些是模板的灵魂:

h5 自适应手机端的页面模板
(图片来源网络,侵删)
  1. 视口设置<meta name="viewport" ...> 是移动端开发的基石,它告诉浏览器如何控制页面的尺寸和缩放。
  2. 流式布局:使用百分比(%)或 Flexbox/Grid 等现代布局方式,而不是固定像素,让页面元素能根据屏幕宽度自动伸缩。
  3. 弹性图片和媒体:使用 max-width: 100% 确保图片和视频不会溢出其容器。
  4. 媒体查询:针对不同尺寸的屏幕(主要是手机横竖屏)进行样式调整,优化特定场景下的显示效果。
  5. 移动端交互优化
    • 点击高亮-webkit-tap-highlight-color: transparent; 去除点击时出现的灰色背景。
    • 禁止缩放user-scalable=no 有时为了更好的固定布局体验会使用,但请注意这可能会影响可访问性。
    • 适配 iPhone X 等异形屏:使用 viewport-fit=cover 和 CSS 的 env() 函数来安全区域适配。

H5 自适应手机端页面模板代码

这是一个完整的、可以直接使用的模板,您可以根据自己的需求修改内容。

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, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
    <meta name="format-detection" content="telephone=no, email=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    我的 H5 页面</title>
    <!-- 引入外部 CSS 文件 -->
    <link rel="stylesheet" href="style.css">
    <!-- 引入字体图标库 (Font Awesome) -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
</head>
<body>
    <div class="page-container">
        <!-- 顶部导航栏 -->
        <header class="header">
            <div class="header-content">
                <div class="menu-toggle">
                    <i class="fas fa-bars"></i>
                </div>
                <h1 class="page-title">首页</h1>
                <div class="header-action">
                    <i class="fas fa-search"></i>
                </div>
            </div>
        </header>
        <!-- 主要内容区域 -->
        <main class="main-content">
            <!-- 轮播图 -->
            <section class="banner">
                <img src="https://via.placeholder.com/750x300.png?text=Banner+Image" alt="轮播图" class="banner-img">
            </section>
            <!-- 功能入口 -->
            <section class="feature-grid">
                <div class="feature-item">
                    <i class="fas fa-home"></i>
                    <span>首页</span>
                </div>
                <div class="feature-item">
                    <i class="fas fa-th-large"></i>
                    <span>分类</span>
                </div>
                <div class="feature-item">
                    <i class="fas fa-shopping-cart"></i>
                    <span>购物车</span>
                </div>
                <div class="feature-item">
                    <i class="fas fa-user"></i>
                    <span>我的</span>
                </div>
            </section>
            <!-- 列表内容 -->
            <section class="content-list">
                <h2 class="section-title">热门资讯</h2>
                <div class="list-item">
                    <img src="https://via.placeholder.com/100x100.png?text=News+1" alt="新闻图片" class="list-item-img">
                    <div class="list-item-content">
                        <h3>这是一条非常吸引人的新闻标题</h3>
                        <p>这里是新闻的简短描述,用来吸引用户点击阅读更多内容...</p>
                        <div class="list-item-meta">
                            <span class="author">张三</span>
                            <span class="time">2025-10-27</span>
                        </div>
                    </div>
                </div>
                <div class="list-item">
                    <img src="https://via.placeholder.com/100x100.png?text=News+2" alt="新闻图片" class="list-item-img">
                    <div class="list-item-content">
                        <h3>另一条重要的新闻资讯</h3>
                        <p>这里是新闻的简短描述,用来吸引用户点击阅读更多内容...</p>
                        <div class="list-item-meta">
                            <span class="author">李四</span>
                            <span class="time">2025-10-26</span>
                        </div>
                    </div>
                </div>
            </section>
        </main>
        <!-- 底部导航栏 -->
        <footer class="footer">
            <div class="footer-item active">
                <i class="fas fa-home"></i>
                <span>首页</span>
            </div>
            <div class="footer-item">
                <i class="fas fa-compass"></i>
                <span>发现</span>
            </div>
            <div class="footer-item">
                <i class="fas fa-comment-dots"></i>
                <span>消息</span>
            </div>
            <div class="footer-item">
                <i class="fas fa-user"></i>
                <span>我的</span>
            </div>
        </footer>
    </div>
    <!-- 引入外部 JS 文件 (如果需要) -->
    <script src="script.js"></script>
</body>
</html>

CSS 文件 (style.css)

/* --- 全局样式和重置 --- */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    /* 移除移动端点击高亮 */
    -webkit-tap-highlight-color: transparent;
}
body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    font-size: 16px; /* 基准字体大小 */
    line-height: 1.5;
    color: #333;
    background-color: #f5f5f5;
    /* 适配 iPhone X 等机型的安全区域 */
    padding-bottom: constant(safe-area-inset-bottom); /* iOS < 11.2 */
    padding-bottom: env(safe-area-inset-bottom);     /* iOS >= 11.2 */
}
.page-container {
    display: flex;
    flex-direction: column;
    min-height: 100vh; /* 确保页面至少占满整个视口高度 */
}
/* --- 头部 --- */
.header {
    background-color: #fff;
    color: #333;
    padding: 10px 15px;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 1000;
    /* 适配 iPhone X 等机型的刘海屏 */
    padding-top: constant(safe-area-inset-top); /* iOS < 11.2 */
    padding-top: env(safe-area-inset-top);     /* iOS >= 11.2 */
}
.header-content {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.page-title {
    font-size: 1.2rem; /* 1.2 * 16px = 19.2px */
    font-weight: 500;
}
.menu-toggle, .header-action {
    font-size: 1.5rem;
    color: #666;
    cursor: pointer;
}
/* --- 主要内容 --- */
.main-content {
    flex: 1; /* 占据剩余所有空间 */
    padding: 15px;
    padding-top: 60px; /* 为固定的 header 留出空间 */
    padding-bottom: 60px; /* 为固定的 footer 留出空间 */
}
/* 轮播图 */
.banner {
    width: 100%;
    border-radius: 8px;
    overflow: hidden;
    margin-bottom: 20px;
}
.banner-img {
    width: 100%;
    height: auto;
    display: block;
}
/* 功能网格 */
.feature-grid {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    margin-bottom: 30px;
}
.feature-item {
    width: 25%;
    text-align: center;
    margin-bottom: 15px;
}
.feature-item i {
    font-size: 2rem; /* 2 * 16px = 32px */
    color: #007bff;
    margin-bottom: 5px;
    display: block;
}
.feature-item span {
    font-size: 0.875rem; /* 0.875 * 16px = 14px */
    color: #666;
}
/* 列表样式 */
.section-title {
    font-size: 1.1rem;
    font-weight: 600;
    margin-bottom: 15px;
    padding-left: 5px;
    border-left: 4px solid #007bff;
}
.list-item {
    background-color: #fff;
    border-radius: 8px;
    padding: 15px;
    margin-bottom: 15px;
    display: flex;
    box-shadow: 0 2px 5px rgba(0,0,0,0.05);
}
.list-item-img {
    width: 100px;
    height: 100px;
    border-radius: 6px;
    margin-right: 15px;
    object-fit: cover; /* 保证图片不变形 */
}
.list-item-content {
    flex: 1;
}
.list-item-content h3 {
    font-size: 1rem;
    font-weight: 600;
    margin-bottom: 8px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.list-item-content p {
    font-size: 0.875rem;
    color: #666;
    margin-bottom: 10px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.list-item-meta {
    font-size: 0.75rem;
    color: #999;
}
.list-item-meta span {
    margin-right: 15px;
}
/* --- 底部导航 --- */
.footer {
    background-color: #fff;
    display: flex;
    justify-content: space-around;
    align-items: center;
    padding: 8px 0;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 1000;
    border-top: 1px solid #eee;
    /* 适配 iPhone X 等机型的安全区域 */
    padding-bottom: constant(safe-area-inset-bottom); /* iOS < 11.2 */
    padding-bottom: env(safe-area-inset-bottom);     /* iOS >= 11.2 */
}
.footer-item {
    text-align: center;
    color: #999;
    cursor: pointer;
    flex: 1;
    padding: 5px;
}
.footer-item.active {
    color: #007bff;
}
.footer-item i {
    font-size: 1.25rem; /* 1.25 * 16px = 20px */
    display: block;
    margin-bottom: 2px;
}
.footer-item span {
    font-size: 0.75rem; /* 0.75 * 16px = 12px */
}
/* --- 媒体查询 (可选,用于微调) --- */
/* 当屏幕宽度小于 360px 时 */
@media screen and (max-width: 360px) {
    body {
        font-size: 14px; /* 整体调小字体 */
    }
    .page-title {
        font-size: 1rem;
    }
}

JavaScript 文件 (script.js)

// 这个文件可以放一些交互逻辑,例如菜单点击、底部导航切换等
document.addEventListener('DOMContentLoaded', function() {
    // 底部导航切换示例
    const footerItems = document.querySelectorAll('.footer-item');
    footerItems.forEach(item => {
        item.addEventListener('click', function() {
            // 移除所有 active 类
            footerItems.forEach(i => i.classList.remove('active'));
            // 为当前点击的项添加 active 类
            this.classList.add('active');
            // 这里可以添加切换页面内容的逻辑
            // 根据点击的项加载不同的 main-content
            console.log('切换到:', this.querySelector('span').textContent);
        });
    });
    // 顶部菜单点击示例
    const menuToggle = document.querySelector('.menu-toggle');
    menuToggle.addEventListener('click', function() {
        alert('菜单被点击了!');
        // 这里可以展开一个侧边栏菜单
    });
});

如何使用这个模板

  1. 创建文件:在你的项目文件夹中创建三个文件:index.htmlstyle.cssscript.js
  2. 复制粘贴:将上面的代码分别复制到对应的文件中。
  3. :将模板中的占位图片(https://via.placeholder.com/...)替换为你自己的图片,修改 HTML 中的文本内容为你自己的业务信息。
  4. 调整样式:打开 style.css,根据你的品牌色和设计需求修改颜色、字体大小、间距等。
  5. 添加功能:在 script.js 中添加你需要的交互逻辑,比如轮播图、AJAX 请求等。

模板特点

  • 完全响应式:使用 viewport 和流式布局,能完美适配各种尺寸的手机屏幕。
  • 现代化布局:采用 Flexbox 实现复杂的页面布局(如头部、内容、底部),代码简洁高效。
  • 移动端友好
    • 禁用了点击高亮和用户缩放(可根据需求调整)。
    • 适配了 iPhone X 等刘海屏的安全区域。
    • 使用 rem 和相对单位,方便整体调整字体大小。
  • 结构清晰:HTML 语义化标签(<header>, <main>, <footer>)让代码结构一目了然。
  • 易于扩展:模块化的 CSS 类名(如 .feature-grid, .list-item)让你可以轻松地添加新功能或修改现有样式。

这个模板是一个非常好的起点,你可以基于它快速构建出专业、美观的 H5 页面。

h5 自适应手机端的页面模板
(图片来源网络,侵删)