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

(图片来源网络,侵删)
- 视口设置:
<meta name="viewport" ...>是移动端开发的基石,它告诉浏览器如何控制页面的尺寸和缩放。 - 流式布局:使用百分比(%)或 Flexbox/Grid 等现代布局方式,而不是固定像素,让页面元素能根据屏幕宽度自动伸缩。
- 弹性图片和媒体:使用
max-width: 100%确保图片和视频不会溢出其容器。 - 媒体查询:针对不同尺寸的屏幕(主要是手机横竖屏)进行样式调整,优化特定场景下的显示效果。
- 移动端交互优化:
- 点击高亮:
-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('菜单被点击了!');
// 这里可以展开一个侧边栏菜单
});
});
如何使用这个模板
- 创建文件:在你的项目文件夹中创建三个文件:
index.html、style.css和script.js。 - 复制粘贴:将上面的代码分别复制到对应的文件中。
- :将模板中的占位图片(
https://via.placeholder.com/...)替换为你自己的图片,修改 HTML 中的文本内容为你自己的业务信息。 - 调整样式:打开
style.css,根据你的品牌色和设计需求修改颜色、字体大小、间距等。 - 添加功能:在
script.js中添加你需要的交互逻辑,比如轮播图、AJAX 请求等。
模板特点
- 完全响应式:使用
viewport和流式布局,能完美适配各种尺寸的手机屏幕。 - 现代化布局:采用 Flexbox 实现复杂的页面布局(如头部、内容、底部),代码简洁高效。
- 移动端友好:
- 禁用了点击高亮和用户缩放(可根据需求调整)。
- 适配了 iPhone X 等刘海屏的安全区域。
- 使用
rem和相对单位,方便整体调整字体大小。
- 结构清晰:HTML 语义化标签(
<header>,<main>,<footer>)让代码结构一目了然。 - 易于扩展:模块化的 CSS 类名(如
.feature-grid,.list-item)让你可以轻松地添加新功能或修改现有样式。
这个模板是一个非常好的起点,你可以基于它快速构建出专业、美观的 H5 页面。

(图片来源网络,侵删)
