# 模板 02：内容模块与页面写法模板（每页一 tuple）

> 内容模块 `_contentN.py` 只写"每个页面的内容"，结构排版由 styles.css 决定、翻页由 _build.py 生成。

## 一、模块格式（照抄即可）

```python
# _contentN.py —— 第 N 次课内容模块
def img(src, alt, maxh=300):
    return ('<div style="text-align:center;margin:12px 0;"><img src="%s" alt="%s" '
            'style="max-height:%dpx;width:auto;max-width:88%%;border-radius:10px;'
            'box-shadow:0 2px 10px rgba(0,0,0,.18);border:1px solid #e2e8f0;"></div>' % (src, alt, maxh))

SLIDES = [
    ("封面", "第 1 章 标题", """<div style="text-align:center;...">…正文 HTML…</div>"""),
    ("目录", "今天学什么", """…"""),
    # …… 每一项 = (导航短标题, 页大标题, 正文HTML)
]
```

## 二、可直接使用的排版积木（styles.css 已定义）

| 积木 | 用途 |
|---|---|
| `<table>` | 对比/正反例/矩阵（4–6 列，密表格在本页 `<style>` 里调小字号） |
| `.quote-block` | 定义/引述/结论（金色左边线） |
| `.info-box` | 提示/小抄/记忆钩（蓝色左边线） |
| `.danger-box` | 易错/警示/答案（红色左边线，尽量少用，答案走揭晓） |
| `.card-mini` | 卡片（配 `<h3>` 标题），可放 `.grid-2/.grid-3` 布局 |
| `.tag tag-blue/red/green/purple/orange` | 小块标签 |
| `.quiz / .quiz-opt / .quiz-btn / .quiz-feedback` | 交互题（见模板 04） |
| `img(src, alt, maxh)` | 图片（maxh 建议：正文演示图 330–420，证书/框架大图 760–780，封面 260） |
| 内联 `<svg>` | 关系图/流程图（见本模板第五节） |

## 三、高复用页面模式（今日打磨出的最佳实践）

### 1) 概念正反例对照表（强烈推荐）
```html
<table>
<tr><th style="width:16%">特征</th><th style="width:30%">含义</th><th>✓ 正面例子</th><th>✗ 反面例子（缺了这项会怎样）</th></tr>
<tr><td><b>① 目的性</b></td><td>有明确目标…</td><td>鸿蒙 OS：目标明确…</td><td>漫无目的的探索性开发…</td></tr>
</table>
```

### 2) 故事化案例（冲突→处境→回应→目标→结局）
```html
<p><b>风暴来临（2019）</b>：…冲突…</p>
<p><b>华为的处境</b>：…困难…</p>
<p><b>华为的回应</b>：…行动…</p>
<div class="grid-3">…目标三卡片…</div>
<div class="quote-block">结果：…结局…</div>
```

### 3) 失败案例对比（增强说服力）
```html
<div class="grid-3">
  <div class="card-mini"><h3>IBM｜OS/360</h3><p>…失败原因…</p></div>
  <div class="card-mini"><h3>微软｜Windows Vista</h3><p>…</p></div>
  <div class="card-mini"><h3>苹果｜Newton / Lisa</h3><p>…</p></div>
</div>
<div class="quote-block">对照：它赢在……项目管理方法正是避免输掉的关键。</div>
```

### 4) 左大图＋右要点＋底部引述
```html
<div style="display:flex;gap:28px;align-items:center;justify-content:center;">
  <div style="flex:0 0 55%;text-align:center;"> <img … maxh780 rounded> </div>
  <div style="flex:0 0 42%;"> ← 2–4 张 card-mini 要点 → </div>
</div>
<div class="quote-block">……引述……</div>
```

### 5) 内联 SVG 关系图/流程图（要点）
- 用 `viewBox` 固定坐标系，`style="height:min(78vh,820px);width:auto;max-width:100%"` 随屏放大不失真；
- 画序：先 `<defs>`（箭头 marker、渐变）→ 先画连线与标签 → 再画色块（否则线被盖）；
- **左右连线留足空隙（≥60px）**，标签放空隙中央，避免被色块遮挡；页内可加 `<style>` 压缩页标题/内边距腾空间。

## 四、字号与拆页规范（投影适用）

| 元素 | 最小字号 |
|---|---|
| 正文 `.slide-content` | 2.1rem |
| 选择题选项 `.quiz-opt` | 2.0rem |
| 按钮 `.quiz-btn` | 1.7rem |
| 表格 | 1.75rem（密表格页可在本页 `<style>` 降到 1.4rem） |
| 标签 `.tag` | 1.35rem |

- 一页放不下就**拆页**；选择题**一题一页**；填空题题干必须**给出已知项**再留空。
- 密表格合并页用页内 `<style>` 微调，不动全局样式。

## 五、书写纪律（避免返工）

1. 学生页面**不出现**：出处注（教材原句/教材数据/沿用学校课件/原题出自）、课堂操作提示（可举手/口答/先写）、内部编号（《06》《07》、v2.0、工作单）、提醒式批注（别记错/注意：/全书都是…的展开）；
2. 引导语气统一为中性问句：💡 想一想／猜一猜／请判断；
3. 答案一律走交互（点选或揭晓按钮），不直接印在页面上；
4. 目标读者是学生——保持纯内容、无加工痕迹。