` 绝对定位叠加在 SVG 上方。HTML div 由 dom-to-svg 精确定位,不经过 viewBox 坐标转换,偏移风险为零。
```html
720
标准版
```
```html
```
### 2.2 不同字号混排 -- 必须用 flex 独立元素
**问题**:大小字号内嵌(`
3.08s
`)经 dom-to-svg 转为独立 tspan 后,svg2pptx 给每个 tspan 按各自字号做 baseline 偏移,小字会上移。
```html
3.08
s
```
```html
3.08s
```
### 2.3 环形图(圆弧进度条)-- SVG 画弧 + HTML 叠加文字
```html
```
### 2.4 图例标签 -- 用 HTML flex 布局
```html
```
### 2.5 x 轴标签(标准版/Pro/Max)-- 用 HTML 容器
```html
标准版
Pro
Max
```
---
## 3. 图片路径
| 场景 | 错误写法 | 正确写法 |
|------|---------|---------|
| img src 引用 | 依赖浏览器 resolve | html2svg 以 HTML 文件所在目录为基准 resolve 相对路径 |
| CSS background-image | 会被 dom-to-svg 忽略 | 用 `
![]()
` 标签 |
---
## 4. SVG circle 环形图属性
| 属性 | svg2pptx 支持 | 说明 |
|------|-------------|------|
| `stroke-dasharray="arc gap"` | 支持 | 用两个值:弧线长度 + 间隔长度 |
| `stroke-dashoffset` | **不支持** | 禁止使用,改用 dasharray 的两值格式 |
| `stroke-linecap="round"` | 支持 | 圆角弧端 |
| `transform="rotate(-90 cx cy)"` | 支持 | 从12点钟方向开始 |
正确弧线写法:`stroke-dasharray="235 314"` (弧长=235, 圆周=2*pi*50=314)
---
## 5. 底层氛围图
| 项目 | 规则 |
|------|------|
| opacity | 0.05 - 0.10(卡片内)/ 0.25 - 0.40(封面页) |
| 尺寸 | 限制在容器 40-60%,不要全覆盖 |
| z-index | 必须为 0 或 -1 |
| 实现方式 | 极低 opacity:直接 `
![]()
` + opacity |
| | 封面级渐隐:`
` 容器内 img + 遮罩 div |
| **禁止** | div 遮罩在 PPTX 中层叠不可靠时,回退到纯 opacity |
---
## 6. 配图技法管线安全等级
| 技法 | 管线安全 | 原因 |
|------|---------|------|
| 渐隐融合(div遮罩) | 安全 | 真实 div + linear-gradient |
| 色调蒙版 | 安全 | 真实 div + 半透明背景 |
| 氛围底图 | 最安全 | 纯 opacity |
| 裁切视窗 | 安全 | overflow:hidden + div 渐变 |
| 圆形裁切 | 安全 | border-radius |
| ~~CSS mask-image~~ | **禁止** | dom-to-svg 不支持 |
---
## 7. 总结:HTML 设计稿防偏移 checklist
生成每页 HTML 时,对照以下清单:
- [ ] CSS 禁止清单中的特性未使用
- [ ] 所有图片用 `
![]()
` 标签,不用 CSS background-image
- [ ] 内联 SVG 中**不含 `
` 元素**,所有文字标注用 HTML div 叠加
- [ ] 不同字号混排用 flex + 独立 span,不用嵌套 span
- [ ] 环形图用 stroke-dasharray 两值格式,不用 dashoffset
- [ ] 图例、x轴标签、数据标注全部用 HTML 元素,不用 SVG text
- [ ] 底层配图用低 opacity `
` 或 div 遮罩
- [ ] 伪元素 `::before`/`::after` 装饰已用真实元素替代