跳到主要内容植物大战僵尸网页版前端页面结构与样式解析 | 极客日志HTML / CSS大前端
植物大战僵尸网页版前端页面结构与样式解析
综述由AI生成详细解析了植物大战僵尸网页版的前端实现。内容包括完整的 HTML 页面结构代码,展示游戏说明页的布局;提供核心 CSS 样式代码,涉及渐变背景、网格布局及响应式设计。此外,文章深入讲解了关键 CSS 属性(如字体、背景、高度控制)的工作原理,以及 Flexbox 和 Grid 布局的具体应用技巧,为开发者构建类似游戏界面提供参考。
监控大屏24 浏览 全部代码
HTML 部分
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>游戏说明 - 植物大战僵尸</title>
<link rel="stylesheet" href="base.css">
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
</head>
<body>
<div>
<header>
<h1>
<img src="https://img.icons8.com/color/96/000000/plant-under-sun.png" alt=> 植物大战僵尸 - 游戏说明
欢迎来到植物大战僵尸!这是一款策略塔防游戏,你需要种植各种植物来抵御僵尸的进攻。
游戏目标
你的目标是保护你的房屋免受僵尸入侵。僵尸会从右侧出现并向左移动,试图进入你的房屋。如果僵尸到达最左侧,游戏结束。
通过种植植物来攻击、阻挡和消灭僵尸,成功抵御所有僵尸波次即可赢得关卡胜利!
如何玩游戏
开始游戏:点击右上角的'开始游戏'按钮
选择植物:点击左侧的植物卡片选择要种植的植物
种植植物:点击草坪上的格子来种植选择的植物
收集阳光:点击向日葵产生的阳光或从天而降的阳光来增加阳光数量
策略布局:合理安排植物阵容,抵御不断来袭的僵尸
使用铲子:点击铲子工具可以移除不需要的植物
注意:每种植物都有不同的阳光消耗和冷却时间,合理安排资源是关键!
植物图鉴
了解每种植物的特性,合理搭配你的防御阵容:
向日葵
消耗:50 阳光
每隔 24 秒产生 25 阳光,是阳光经济的基础。
豌豆射手
消耗:100 阳光
每隔 1.4 秒发射一颗豌豆,攻击直线上的僵尸。
坚果墙
消耗:50 阳光
高耐久植物,可以阻挡僵尸前进,为攻击植物争取时间。
樱桃炸弹
消耗:150 阳光
种植后立即爆炸,消灭周围 3x3 范围内的所有僵尸。
土豆地雷
消耗:25 阳光
埋在地下,需要时间准备,僵尸踩到会爆炸。
寒冰射手
消耗:175 阳光
发射冰冻豌豆,可以减缓僵尸的移动速度。
双发射手
消耗:200 阳光
一次发射两颗豌豆,是豌豆射手的升级版。
僵尸图鉴
了解你的敌人,制定相应的防御策略:
普通僵尸
生命值:中等
最常见的僵尸类型,移动速度中等。
路障僵尸
生命值:高
头戴路障,比普通僵尸更耐打。
铁桶僵尸
生命值:非常高
头戴铁桶,极其耐打,需要集中火力攻击。
游戏技巧与策略
阳光经济优先
游戏前期多种植向日葵,建立稳定的阳光收入来源。建议至少种植 3-4 棵向日葵后再考虑攻击植物。
前排防御很重要
在僵尸出现的前排位置种植坚果墙,为后排的攻击植物争取更多输出时间。
合理布置攻击植物
将豌豆射手等攻击植物放在后排,确保它们有足够的安全空间进行攻击。
善用樱桃炸弹
当大量僵尸聚集时,使用樱桃炸弹可以瞬间清理一大片区域,化解危机。
减速效果显著
寒冰射手的减速效果可以让僵尸在火力范围内停留更久,显著提高击杀效率。
返回游戏
"植物"
<img src="https://img.icons8.com/color/96/000000/zombie.png" alt="僵尸">
</h1>
<p>
</p>
</header>
<section>
<h2>
<i>
</i>
</h2>
<p>
</p>
<p>
</p>
</section>
<section>
<h2>
<i>
</i>
</h2>
<ol>
<li>
<strong>
</strong>
</li>
<li>
<strong>
</strong>
</li>
<li>
<strong>
</strong>
</li>
<li>
<strong>
</strong>
</li>
<li>
<strong>
</strong>
</li>
<li>
<strong>
</strong>
</li>
</ol>
<p>
</p>
</section>
<section>
<h2>
<i>
</i>
</h2>
<p>
</p>
<div>
<div>
<div>
<img src="https://img.icons8.com/color/96/000000/sunflower.png" alt="向日葵">
</div>
<div>
<h3>
</h3>
<div>
</div>
<p>
</p>
</div>
</div>
<div>
<div>
<img src="https://img.icons8.com/color/96/000000/pea-shooter.png" alt="豌豆射手">
</div>
<div>
<h3>
</h3>
<div>
</div>
<p>
</p>
</div>
</div>
<div>
<div>
<img src="https://img.icons8.com/color/96/000000/wall-nut.png" alt="坚果墙">
</div>
<div>
<h3>
</h3>
<div>
</div>
<p>
</p>
</div>
</div>
<div>
<div>
<img src="https://img.icons8.com/color/96/000000/cherry-bomb.png" alt="樱桃炸弹">
</div>
<div>
<h3>
</h3>
<div>
</div>
<p>
</p>
</div>
</div>
<div>
<div>
<img src="https://img.icons8.com/color/96/000000/potato-mine.png" alt="土豆地雷">
</div>
<div>
<h3>
</h3>
<div>
</div>
<p>
</p>
</div>
</div>
<div>
<div>
<img src="https://img.icons8.com/color/96/000000/snow-pea.png" alt="寒冰射手">
</div>
<div>
<h3>
</h3>
<div>
</div>
<p>
</p>
</div>
</div>
<div>
<div>
<img src="https://img.icons8.com/color/96/000000/repeater.png" alt="双发射手">
</div>
<div>
<h3>
</h3>
<div>
</div>
<p>
</p>
</div>
</div>
</div>
</section>
<section>
<h2>
<i>
</i>
</h2>
<p>
</p>
<div>
<div>
<div>
<img src="https://img.icons8.com/color/96/000000/zombie.png" alt="普通僵尸">
</div>
<div>
<h3>
</h3>
<div>
</div>
<p>
</p>
</div>
</div>
<div>
<div>
<img src="https://img.icons8.com/color/96/000000/zombie-with-cone.png" alt="路障僵尸">
</div>
<div>
<h3>
</h3>
<div>
</div>
<p>
</p>
</div>
</div>
<div>
<div>
<img src="https://img.icons8.com/color/96/000000/zombie-with-bucket.png" alt="铁桶僵尸">
</div>
<div>
<h3>
</h3>
<div>
</div>
<p>
</p>
</div>
</div>
</div>
</section>
<section>
<h2>
<i>
</i>
</h2>
<div>
<div>
<i>
</i>
</div>
<div>
<h4>
</h4>
<p>
</p>
</div>
</div>
<div>
<div>
<i>
</i>
</div>
<div>
<h4>
</h4>
<p>
</p>
</div>
</div>
<div>
<div>
<i>
</i>
</div>
<div>
<h4>
</h4>
<p>
</p>
</div>
</div>
<div>
<div>
<i>
</i>
</div>
<div>
<h4>
</h4>
<p>
</p>
</div>
</div>
<div>
<div>
<i>
</i>
</div>
<div>
<h4>
</h4>
<p>
</p>
</div>
</div>
</section>
<div>
<a href="index.html">
<i>
</i>
</a>
</div>
</div>
</body>
</html>
CSS 部分
基础样式
.instructions-container {
max-width: 1000px;
margin: 40px auto;
background: rgba(255, 255, 255, 0.95);
border-radius: 20px;
padding: 40px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
border: 5px solid var(--accent-yellow);
}
.instructions-header {
text-align: center;
margin-bottom: 40px;
padding-bottom: 20px;
border-bottom: 3px solid var(--primary-green);
}
.instructions-header h1 {
color: var(--primary-green);
font-size: 2.5rem;
margin-bottom: 15px;
display: flex;
align-items: center;
justify-content: center;
gap: 20px;
}
.instructions-header p {
color: #666;
font-size: 1.2rem;
max-width: 800px;
margin: 0 auto;
line-height: 1.6;
}
.instructions-section {
margin-bottom: 40px;
padding: 25px;
background: #F9F9F9;
border-radius: 15px;
border-left: 5px solid var(--primary-green);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
}
.section-title {
color: var(--primary-green);
font-size: 1.8rem;
margin-bottom: 20px;
display: flex;
align-items: center;
gap: 15px;
}
.section-title i {
color: var(--accent-yellow);
}
.game-objective { background: #E8F5E9; }
.how-to-play { background: #E3F2FD; }
.plants-guide { background: #FFF3E0; }
.zombies-guide { background: #FFEBEE; }
.tips { background: #F3E5F5; }
.plant-grid, .zombie-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 20px;
margin-top: 20px;
}
.plant-item, .zombie-item {
background: white;
border-radius: 10px;
padding: 20px;
display: flex;
align-items: center;
gap: 20px;
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1);
transition: transform 0.3s ease;
}
.plant-item:hover, .zombie-item:hover {
transform: translateY(-5px);
}
.plant-icon, .zombie-icon {
flex-shrink: 0;
}
.plant-icon img, .zombie-icon img {
width: 80px;
height: 80px;
object-fit: contain;
}
.plant-info, .zombie-info {
flex: 1;
}
.plant-name, .zombie-name {
color: var(--primary-green);
font-size: 1.3rem;
font-weight: bold;
margin-bottom: 8px;
}
.zombie-name { color: #C62828; }
.plant-cost, .zombie-health {
color: #FF9800;
font-weight: bold;
margin-bottom: 5px;
}
.zombie-health { color: #F44336; }
.plant-desc, .zombie-desc {
color: #666;
line-height: 1.5;
font-size: 0.95rem;
}
.instructions-list {
margin-left: 20px;
margin-bottom: 20px;
}
.instructions-list li {
margin-bottom: 12px;
line-height: 1.6;
color: #555;
}
.tip-item {
background: white;
border-radius: 10px;
padding: 20px;
margin-bottom: 15px;
display: flex;
align-items: center;
gap: 20px;
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1);
}
.tip-icon {
width: 50px;
height: 50px;
background: var(--accent-yellow);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.tip-icon i {
color: white;
font-size: 1.5rem;
}
.tip-content {
flex: 1;
}
.tip-content h4 {
color: var(--primary-green);
margin-bottom: 8px;
font-size: 1.2rem;
}
.back-button {
text-align: center;
margin-top: 40px;
}
.back-button a {
display: inline-flex;
align-items: center;
gap: 10px;
padding: 15px 40px;
background: linear-gradient(to right, var(--primary-green), var(--dark-green));
color: white;
text-decoration: none;
border-radius: 10px;
font-size: 1.2rem;
font-weight: bold;
transition: all 0.3s ease;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
}
.back-button a:hover {
transform: translateY(-3px);
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.3);
background: linear-gradient(to right, var(--dark-green), var(--primary-green));
}
@media (max-width: 768px) {
.instructions-container {
padding: 20px;
margin: 20px;
}
.instructions-header h1 {
font-size: 2rem;
}
.plant-grid, .zombie-grid {
grid-template-columns: 1fr;
}
.plant-item, .zombie-item {
flex-direction: column;
text-align: center;
gap: 15px;
}
}
代码解析
Font Awesome 图标库引入
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
作用:引入 CDN 链接,为网页提供图标字体库。可以使用各种图标。
Body 基础样式
body {
font-family: 'Arial', sans-serif;
background: linear-gradient(135deg, var(--primary-green) 0%, var(--dark-green) 100%);
min-height: 100vh;
overflow-x: hidden;
color: var(--text-dark);
line-height: 1.6;
}
- font-family: 设置页面的默认字体。浏览器按顺序尝试加载,首选 Arial,备选无衬线字体。
- background: 创建渐变背景色。
linear-gradient 函数定义从左下角到右上角的线性渐变。
- min-height: 设置最小高度为 100% 视口高度。即使内容少,页面也会占满整个屏幕。
- overflow-x: 隐藏水平方向的溢出内容,防止出现水平滚动条。
- color: 设置默认文字颜色,该属性会继承给所有子元素。
- line-height: 设置行高(文字行间距),提升阅读体验。
注意: background 不会继承给子元素,但 color 和 font-family 会继承。
Grid 网格布局
.plant-grid, .zombie-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 20px;
margin-top: 20px;
}
| 属性 | 作用对象 | 方向 | 容器要求 | 使用场景 |
|---|
grid-template-columns | 网格列 | 水平 | display: grid | 定义列数及宽度 |
repeat() | 重复规则 | - | - | 自动填充列数 |
auto-fill | 自动填满 | - | - | 根据容器宽度调整 |
minmax(300px, 1fr) | 单列规则 | - | - | 最小 300px,最大平分剩余空间 |
Flexbox 居中与交互
.plant-item:hover, .zombie-item:hover {
transform: translateY(-5px);
}
| 属性 | 作用对象 | 方向 | 容器要求 | 使用场景 |
|---|
text-align: center | 文字和内联元素 | 水平 | 任何块级元素 | 段落居中、按钮居中 |
justify-content: center | Flex 子项 | 水平 | display: flex | 多个元素整体居中 |
align-items: center | Flex 子项 | 垂直 | display: flex | 垂直方向居中 |
媒体查询响应式
@media (max-width: 768px) {
.instructions-container {
padding: 20px;
margin: 20px;
}
}
这是媒体查询的开始,意思是当屏幕宽度小于等于 768px 时(通常是平板和手机分界点),应用括号内的 CSS 样式,如减小内边距和外边距,调整网格布局为单列等。
相关免费在线工具
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown转HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
- HTML转Markdown
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
- JSON 压缩
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
- JSON美化和格式化
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online