- HTML5 语义化标签: 使用
<header>,<nav>,<main>,<section>,<article>,<footer>等,让代码结构清晰,利于 SEO 和可访问性。 - 移动优先的响应式设计: 通过媒体查询,确保在手机、平板、桌面等不同设备上都有良好的显示效果。
- 现代化的 CSS 布局: 使用 Flexbox 和 Grid 进行布局,它们是目前最强大、最灵活的布局方案。
- 可复用的组件: 模块化的 CSS 结构,方便您后续添加更多页面和功能。
- 交互性: 包含一个简单的移动端导航菜单(汉堡菜单)的交互效果。
最终预览
您可以在浏览器中打开这个 HTML 文件,然后尝试调整浏览器窗口大小,观察布局的变化。

(图片来源网络,侵删)
模板代码
您可以直接将以下所有代码复制到一个新的 .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">我的自适应网站</title>
<!-- 引入一个流行的图标库 Font Awesome,用于显示菜单图标等 -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
/* --- 1. 全局样式和变量 --- */
:root {
--primary-color: #007bff;
--secondary-color: #6c757d;
--background-color: #f4f4f4;
--text-color: #333;
--header-bg: #fff;
--footer-bg: #333;
--max-width: 1200px;
--padding: 20px;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
line-height: 1.6;
color: var(--text-color);
background-color: var(--background-color);
}
img {
max-width: 100%;
height: auto;
}
.container {
max-width: var(--max-width);
margin: 0 auto;
padding: 0 var(--padding);
}
h1, h2, h3 {
line-height: 1.2;
margin-bottom: 1rem;
}
a {
color: var(--primary-color);
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
/* --- 2. 页头 --- */
.main-header {
background-color: var(--header-bg);
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
position: sticky;
top: 0;
z-index: 1000;
}
.header-container {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem var(--padding);
}
.logo {
font-size: 1.5rem;
font-weight: bold;
}
/* --- 3. 导航菜单 --- */
.main-nav ul {
display: flex;
list-style: none;
}
.main-nav a {
color: var(--text-color);
padding: 0.5rem 1rem;
transition: background-color 0.3s;
}
.main-nav a:hover {
background-color: #e9ecef;
border-radius: 4px;
}
/* 汉堡菜单按钮 (默认隐藏) */
.menu-toggle {
display: none;
background: none;
border: none;
font-size: 1.5rem;
cursor: pointer;
}
/* --- 4. 主要内容区 --- */
.main-content {
padding: 2rem 0;
}
/* Hero 区域 */
.hero {
background: linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.5)), url('https://images.unsplash.com/photo-1557804522-97eda2d622b6?q=80&w=1974&auto=format&fit=crop') no-repeat center center/cover;
color: #fff;
text-align: center;
padding: 8rem 1rem;
}
.hero h1 {
font-size: 3rem;
margin-bottom: 1rem;
}
.hero p {
font-size: 1.2rem;
max-width: 600px;
margin: 0 auto 2rem;
}
.btn {
display: inline-block;
padding: 0.8rem 1.5rem;
background-color: var(--primary-color);
color: #fff;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 1rem;
transition: background-color 0.3s, transform 0.2s;
}
.btn:hover {
background-color: #0056b3;
transform: translateY(-2px);
}
/* 特色区块 */
.features {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
padding: 2rem 0;
}
.feature-card {
background: #fff;
padding: 2rem;
border-radius: 8px;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
text-align: center;
transition: transform 0.3s;
}
.feature-card:hover {
transform: translateY(-5px);
}
.feature-card i {
font-size: 3rem;
color: var(--primary-color);
margin-bottom: 1rem;
}
/* --- 5. 页脚 --- */
.main-footer {
background-color: var(--footer-bg);
color: #fff;
text-align: center;
padding: 2rem 0;
margin-top: 3rem;
}
.main-footer p {
margin-bottom: 0.5rem;
}
.footer-links a {
color: #ccc;
margin: 0 0.5rem;
}
.footer-links a:hover {
color: #fff;
}
/* --- 6. 响应式设计 --- */
@media (max-width: 768px) {
/* 在小屏幕上,汉堡菜单按钮显示 */
.menu-toggle {
display: block;
}
/* 默认情况下,导航菜单隐藏 */
.main-nav {
position: absolute;
top: 100%;
left: 0;
right: 0;
background-color: var(--header-bg);
flex-direction: column;
padding: 1rem var(--padding);
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
max-height: 0; /* 初始高度为0,用于动画 */
overflow: hidden;
transition: max-height 0.3s ease-in-out;
}
/* 当菜单被激活时,显示导航菜单 */
.main-nav.active {
max-height: 300px; /* 设置一个足够大的高度 */
}
.main-nav ul {
flex-direction: column;
}
.main-nav a {
display: block;
padding: 0.8rem 0;
border-bottom: 1px solid #eee;
}
/* Hero 区域文字大小调整 */
.hero h1 {
font-size: 2rem;
}
.hero p {
font-size: 1rem;
}
}
</style>
</head>
<body>
<!-- 页头 -->
<header class="main-header">
<div class="container header-container">
<a href="#" class="logo">我的网站</a>
<!-- 汉堡菜单按钮,仅用于移动端 -->
<button class="menu-toggle" id="menu-toggle">
<i class="fas fa-bars"></i>
</button>
<!-- 主导航 -->
<nav class="main-nav" id="main-nav">
<ul>
<li><a href="#home">首页</a></li>
<li><a href="#about">关于我们</a></li>
<li><a href="#services">服务</a></li>
<li><a href="#portfolio">作品集</a></li>
<li><a href="#contact">联系我们</a></li>
</ul>
</nav>
</div>
</header>
<main class="main-content">
<!-- Hero 区域 -->
<section class="hero">
<div class="container">
<h1>欢迎来到我的网站</h1>
<p>这是一个使用 HTML5 和 CSS3 构建的现代化、响应式网站模板,无论您使用手机、平板还是电脑,都能获得完美的浏览体验。</p>
<a href="#" class="btn">了解更多</a>
</div>
</section>
<!-- 特色服务区域 -->
<section class="container features">
<article class="feature-card">
<i class="fas fa-mobile-alt"></i>
<h2>移动优先设计</h2>
<p>从移动端开始设计,确保在所有小屏幕设备上都有出色的表现,然后逐步增强桌面体验。</p>
</article>
<article class="feature-card">
<i class="fas fa-paint-brush"></i>
<h2>现代化样式</h2>
<p>采用最新的 CSS 技术,如 Flexbox 和 Grid,实现灵活、强大的布局效果。</p>
</article>
<article class="feature-card">
<i class="fas fa-code"></i>
<h2>语义化 HTML5</h2>
<p>使用具有清晰含义的 HTML5 标签,不仅让代码更易读,也更有利于搜索引擎优化。</p>
</article>
</section>
</main>
<!-- 页脚 -->
<footer class="main-footer">
<div class="container">
<p>© 2025 我的公司. 保留所有权利.</p>
<div class="footer-links">
<a href="#"><i class="fab fa-weixin"></i></a>
<a href="#"><i class="fab fa-weibo"></i></a>
<a href="#"><i class="fab fa-github"></i></a>
</div>
</div>
</footer>
<script>
// 简单的 JavaScript 用于移动端菜单的交互
document.addEventListener('DOMContentLoaded', function() {
const menuToggle = document.getElementById('menu-toggle');
const mainNav = document.getElementById('main-nav');
menuToggle.addEventListener('click', function() {
// 切换 'active' 类来显示/隐藏菜单
mainNav.classList.toggle('active');
// 可选:切换菜单图标
const icon = menuToggle.querySelector('i');
if (mainNav.classList.contains('active')) {
icon.classList.remove('fa-bars');
icon.classList.add('fa-times');
} else {
icon.classList.remove('fa-times');
icon.classList.add('fa-bars');
}
});
});
</script>
</body>
</html>
模板核心要点解析
响应式设计 (meta 标签和媒体查询)
<meta name="viewport" ...>: 这是移动端自适应的基石,它告诉浏览器如何控制页面的尺寸和缩放。width=device-width确保页面宽度与设备屏幕宽度一致,initial-scale=1.0设置初始缩放比例为 100%。- 媒体查询 (
@media): CSS 的一部分,用于针对不同的屏幕尺寸应用不同的样式,在这个模板中,我们使用@media (max-width: 768px)来定义当屏幕宽度小于 768px(如平板或手机)时的样式。
移动优先设计
- 我们的默认 CSS 样式是为小屏幕(移动设备)设计的。
- 当屏幕变宽时,我们通过媒体查询来覆盖或增强这些样式,而不是为小屏幕写一堆特殊的样式,导航在移动端是垂直堆叠的,在桌面端通过 Flexbox 变成水平排列,这种方法更高效,且逻辑清晰。
布局技术
- Flexbox: 用于一维布局(行或列),在
.header-container中,我们用它来让 Logo 和导航菜单两端对齐,在移动端,导航菜单变为列布局,也得益于 Flexbox。 - Grid: 用于二维布局(行和列),在
.features区域,我们使用grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));来创建一个自适应的卡片网格,它的意思是:“根据容器宽度,尽可能多地放置minmax(300px, 1fr)大小的列,如果空间不够,就自动换行”,这是创建响应式网格的绝佳方式。
语义化 HTML5 标签
<header>: 定义页头或区块的头部。<nav>: 定义导航链接的区域。<main>: 定义文档的主要内容。<section>: 定义文档中的一个区段,通常有标题。<article>: 定义一篇独立的文章内容。<footer>: 定义页脚或区块的底部。
使用这些标签的好处是:
- 代码可读性:结构一目了然。
- SEO(搜索引擎优化):搜索引擎能更好地理解页面内容。
- 可访问性:屏幕阅读器等辅助技术可以更好地为残障人士导航。
可维护性
- CSS 变量 (
root): 我们将颜色、最大宽度等常用值定义为变量,这样,如果想更换主题色,只需修改root中的--primary-color即可,所有用到这个变量的地方都会自动更新。 - 模块化 CSS: 样式按功能(如
.main-header,.features)组织,而不是按页面(如.home-header,.about-header),方便复用。
如何使用这个模板?
- 保存文件: 将上面的代码保存为
index.html。 - : 修改
<title>、Logo 文本、导航链接、<h1>,<p>标签内的文字为你自己的内容。 - 替换图片: 替换
hero区域的background-imageURL 为你自己的图片链接。 - 添加更多页面: 你可以复制
index.html的结构,创建about.html,contact.html等,确保所有页面都链接到同一个 CSS 和 JS 文件,以便保持样式一致。 - 丰富功能: 在此基础上,你可以添加轮播图、表单、更多的动画效果等。
这个模板为您提供了一个坚实、现代且易于扩展的起点,希望对您有帮助!

(图片来源网络,侵删)
