【TRAE技巧便利店】HTML幻灯片Skill,极简专业PPT制作实战

用TRAE Skill打造极简专业PPT:HTML幻灯片制作规范实战测评

一、Skill核心定位

这个Skill聚焦无依赖HTML幻灯片标准化制作,专为追求简洁大气视觉风格、需快速生成高辨识度演示文稿的场景设计,适配学术答辩、项目汇报、产品演示等非开发类PPT制作需求,无需依赖外部框架,一键生成独立可部署文件,兼顾跨设备展示与打印规范。

二、Skill介绍

1. 核心定位

解决传统PPT制作效率低、跨设备格式错乱、视觉风格不统一问题,通过标准化HTML模板与规范,实现零依赖、高兼容、极简风幻灯片快速生成,适配学生论文答辩、项目架构展示、技术文档演示等场景。

2. 适用场景

  • 学术场景:毕业论文答辩、学术会议汇报(需清晰展示技术架构、研究逻辑)
  • 职场场景:项目进度汇报、产品方案演示、技术栈讲解(适配极简风格需求)
  • 个人场景:个人作品集展示、小型培训课件(无需复杂排版,突出核心内容)

三、具体使用方法

1. 触发时机

当用户提出制作PPT、幻灯片、演示文稿需求,或要求修改现有HTML幻灯片时,启用本规范。

2. 操作步骤

  1. 需求确认:明确用户核心需求(主题、页数、核心内容板块、配色偏好),优先确认是否需要极简大气风格,排除复杂图标、花哨动画需求。
  2. 模板调用:直接调用本Skill提供的HTML模板,按以下规范调整:
    • 文件名设置:统一命名为`项目名.html`(如`毕业论文答辩.html`),确保单个独立文件,无外部CDN、JS框架依赖。
    • 画布适配:默认宽度1123px、高度795px,接近A4横向比例,打印时自动适配A4横向,无内容溢出。
    • 配色调整:保留黑金双色基础配色,可根据用户需求微调金色(–accent)深浅,确保文字与背景对比度≥8:1,满足可读性要求。
  3. 内容填充:按模板结构(封面、目录、核心内容、总结)填充内容,遵循**极简原则**,每页仅保留1-2个核心观点,避免文字堆砌,标题加粗突出,正文用浅白色(–text),边框用半透明白色(–border)。
  4. 验证检查:对照文末验证清单逐项核查,确保无格式错误、无内容溢出、代码规范,完成后保存文件,支持本地预览与打印。

3. 调用示例

用户需求:“帮我做一个5页的毕业论文答辩PPT,要求简洁大气,重点展示研究方法和实验结果”

  • 操作:调用模板后,设置文件名`毕业论文答辩.html`,填充封面(标题+姓名+专业)、目录(研究背景、方法、结果、总结)、核心内容页,按清单检查后交付,用户可直接打开HTML文件预览或打印。

四、效果测评

1. 测评维度对比

测评维度 使用本Skill前 使用本Skill后
制作效率 需手动调整格式、适配不同设备,平均耗时2-3小时/10页PPT 模板直接复用,填充内容+简单调整即可完成,平均耗时30分钟/10页PPT,效率提升60%+
视觉效果 格式错乱、配色杂乱、图标花哨,缺乏专业感 黑金极简风格,视觉统一,无多余元素,重点突出,适配学术、职场等正式场景
兼容性 不同设备打开格式变形,打印时出现分页错误 跨设备展示无错乱,打印时自动适配A4横向,分页清晰,无内容截断
复用性 每次制作需重新设计,无统一标准 模板标准化,可重复调用,仅需调整内容,快速生成高质量PPT,降低重复工作成本

2. 实际成果案例

学术论文答辩PPT为例,使用本Skill制作5页演示文稿:

  • 封面:黑金背景+金色标题,简洁大气,快速抓住注意力;
  • 目录页:清晰列出4个核心板块,无多余装饰,一目了然;
  • 内容页:每页聚焦1个核心知识点,文字精简,搭配极简架构图(无复杂图标),重点突出;
  • 总结页:核心结论加粗展示,逻辑清晰,便于观众记忆。
    最终交付后,用户反馈“PPT风格专业、格式整洁,打印和线上展示都没问题,节省了大量排版时间”。

五、多Skill对比(同场景)

Skill类型 核心优势 适用人群 局限性
本HTML幻灯片Skill 零依赖、极简风格、跨设备兼容、打印规范,适配正式场景 学生、职场人、技术从业者,追求简洁专业视觉 不支持复杂动画、3D效果,适合轻量级演示
传统PPT软件(如PowerPoint) 功能丰富,支持复杂动画、多媒体,操作门槛低 普通办公用户,需制作花哨演示文稿 跨设备格式易错乱,文件体积大,打印需手动调整
在线PPT工具(如石墨文档) 云端存储、多人协作,无需本地安装 团队协作场景,需实时编辑PPT 依赖网络,离线无法使用,极简风格定制性弱

六、Skill复用完整提示词

# PPT Skill — HTML 幻灯片制作规范

## 触发时机

当用户要求制作 PPT、幻灯片、演示文稿,或对已有 HTML 幻灯片进行修改时,启用本规范。

---

## 一、输出格式

- 输出单个独立 HTML 文件,无需任何外部依赖(无 CDN、无 JS 框架)
- 文件名建议:`项目名.html`

---

## 二、画布规格

| 参数 | 值 |
|------|-----|
| 宽度 | `1123px` |
| 高度 | `795px` |
| 比例 | 接近 A4 横向 |
| overflow | `hidden`(严禁内容溢出) |

---

## 三、配色系统(黑金双色)

```css
:root {
  --primary: #0D0D0D;
  --accent:  #E8C547;       /* 金色,主强调色 */
  --bg:      #0D0D0D;
  --white:   #FFFFFF;
  --border:  rgba(255,255,255,0.10);
  --text:    rgba(255,255,255,0.88);
  --muted:   rgba(255,255,255,0.45);
  --card:    #1A1A1A;
  --card2:   #222222;
  --fs-body:  12px;
  --fs-title: 16px;
  /* 间距变量 */
  --gap-inner: 4px;    /* 同模块内行间距 */
  --gap-item:  8px;    /* 同模块内条目间距 */
  --gap-block: 14px;   /* 模块之间间距 */
  --lh: 1.65;          /* 统一行高 */
}

禁止使用的颜色:

  • #000(必须用 #0D0D0D
  • 任何纯白背景
  • 任何3位16进制简写色值(如 #fff#000

四、字号规范

/* 全局默认:所有元素继承 */
.slide * { font-size: var(--fs-body); }   /* 12px */

/* 以下类名自动升级为 title 尺寸 */
h2, h3, .sh-section, .sh-title, .big-label,
.slide-title, .cover-title, .feat-title, .card-title,
.num-big, .step-title, .layer-name, .pain-title {
  font-size: var(--fs-title);   /* 16px */
}

禁止使用: 任何硬编码的 font-size 数值(如 font-size:28px)。
封面大标题例外,可用 font-size:72px 等绝对值,但仅限封面。


五、边界线系统(双层)

每张幻灯片有两层边界:

/* 外层:打印边框(白色细线) */
.slide {
  border: 1px solid rgba(255,255,255,0.15);
}

/* 内层:金色内容线(伪元素,inset:36px) */
.slide::before {
  content: '';
  position: absolute;
  inset: 36px;
  border: 1px solid rgba(232,197,71,0.30);
  border-radius: 2px;
  pointer-events: none;
  z-index: 999;
}

内容不得越出金色线: 所有内容区域(header、body)的 margin 必须 ≥ 36px。


六、幻灯片基础结构

.slide {
  width: 1123px;
  height: 795px;
  background: var(--bg);
  position: relative;
  overflow: hidden;
  border-radius: 4px;
  box-shadow: 0 4px 32px rgba(0,0,0,0.6);
  border: 1px solid rgba(255,255,255,0.15);
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
}

七、Header 规范

.slide-header {
  height: 68px;
  background: #111111;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 52px 0 0;   /* 右侧对齐金色线内侧 */
  margin: 36px 36px 0;   /* 与金色线对齐 */
  border-bottom: 1px solid rgba(255,255,255,0.06);
  flex-shrink: 0;
}

Header 结构:

<div class="slide-header">
  <div class="sh-left">
    <div class="sh-bar"></div>       <!-- 金色竖条 -->
    <div class="sh-text">
      <span class="sh-section">SECTION LABEL</span>   <!-- 金色大写 -->
      <span class="sh-title">幻灯片标题</span>
    </div>
  </div>
  <div class="sh-right">
    <div class="sh-logo">iD</div>    <!-- 品牌标识 -->
    <span class="sh-page">01 / N</span>
  </div>
</div>

八、Body 规范

/* 竖向布局(推荐) */
.slide-body {
  padding: 14px 52px 14px;
  margin: 0 36px 36px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;   /* 自动撑满,避免大片空白 */
  gap: var(--gap-block);
  flex: 1;
  min-height: 0;
}

/* 横向多列布局 */
.slide-cols {
  padding: 14px 52px 14px;
  margin: 0 36px 36px;
  display: flex;
  gap: var(--gap-block);
  align-items: stretch;
  flex: 1;
  min-height: 0;
}

.col {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: var(--gap-block);
  flex: 1;
  min-height: 0;
}

要点:

  • justify-content: space-between 保证内容均匀分布,不留大片空白
  • 弹性子元素加 flex:1; min-height:0 确保高度自适应
  • flex-shrink:0 用于固定高度的顶部/底部块

九、常用组件

/* 卡片 */
.card    { background:#1A1A1A; border:1px solid rgba(255,255,255,.10); border-radius:10px; padding:16px 18px; }
.card-hl { background:#111111; border:2px solid var(--accent); border-radius:10px; padding:16px 18px; }

/* 标签 */
.tag   { display:inline-block; padding:2px 9px; border-radius:20px; font-weight:700;
         background:rgba(232,197,71,.12); border:1px solid rgba(232,197,71,.35); color:var(--accent); }
.tag-m { display:inline-block; padding:2px 9px; border-radius:20px; font-weight:700;
         background:#222222; border:1px solid rgba(255,255,255,.10); color:rgba(255,255,255,.45); }

/* 代码/技术标签 */
.chip  { background:#1A1A1A; border:1px solid rgba(232,197,71,0.3);
         border-radius:5px; padding:3px 10px; color:var(--accent); font-family:monospace; }

/* 分割线 */
.divider { width:48px; height:2px; background:var(--accent); border-radius:1px; margin:10px 0; }

/* 辅助文字 */
.sub { color:var(--muted); margin-bottom:var(--gap-block); line-height:var(--lh); }

十、导航栏(固定底部)

<div class="nav" id="nav">
  <button class="nb" id="prevBtn" onclick="go(cur-1)" disabled>← 上一页</button>
  <div class="dots" id="dots"></div>
  <button class="nb" id="nextBtn" onclick="go(cur+1)">下一页 →</button>
</div>
const N = /* 总页数 */;
let cur = 0;
const slides = document.querySelectorAll('.slide');
const dots   = document.getElementById('dots');
const prev   = document.getElementById('prevBtn');
const next   = document.getElementById('nextBtn');

// 生成圆点
slides.forEach((_,i) => {
  const d = document.createElement('div');
  d.className = 'dot' + (i===0?' active':'');
  d.onclick = () => go(i);
  dots.appendChild(d);
});

function go(n) {
  if (n < 0 || n >= N) return;
  slides[cur].scrollIntoView && null;
  cur = n;
  slides[cur].scrollIntoView({ behavior:'smooth', block:'center' });
  document.querySelectorAll('.dot').forEach((d,i) => d.classList.toggle('active', i===cur));
  prev.disabled = cur === 0;
  next.disabled = cur === N-1;
}

document.addEventListener('keydown', e => {
  if (e.key==='ArrowRight'||e.key==='ArrowDown') go(cur+1);
  if (e.key==='ArrowLeft' ||e.key==='ArrowUp')   go(cur-1);
});

十一、打印样式

@media print {
  @page { size: A4 landscape; margin: 0; }
  body { background: #0D0D0D; padding: 0; gap: 0; }
  .nav { display: none; }
  .slide {
    page-break-after: always;
    break-after: page;
    border-radius: 0;
    box-shadow: none;
    border: none;
    margin: 0;
    width: 100vw;
    height: 100vh;
  }
  .slide:last-child { page-break-after: avoid; break-after: avoid; }
}

十二、幻灯片 ID 与页码规范

  • 每张幻灯片:id="sN"(从 s1 开始)
  • 页码格式:NN / TT(两位数字,如 01 / 09
  • 封面(s1)和结束页(最后一张)通常不显示页码
  • 新增/删除页面后必须同步更新:
    1. 所有 id="sN" 属性
    2. 所有 sh-page 中的总数 /TT
    3. JS 中的 const N = TT

十三、内容布局原则

层次感表达(优先级排序)

  1. 缩进量:元素越核心,越居中/越宽;越边缘,越缩进
  2. 颜色亮度:核心模块用金色实线边框 border:2px solid var(--accent);次级用半透明金色;边缘用白色
  3. 信息密度:核心层有标题+描述,边缘层仅标题

结构选择指南

场景 推荐结构
并列对比(2-4项) grid-template-columns: repeat(N, 1fr)
流程/递进 竖向堆叠 + 连接箭头 或渐变线
有主次的对比 左右两栏,右侧高亮 card-hl
叙事性内容 引子 → 矛盾框 → 编号要点 → 结论
技术架构 竖向层叠,核心层最宽,边缘层缩进

严禁的设计

  • 大片空白(必须用 justify-content:space-between 撑满)
  • 纯并列结构表达逻辑关系(要体现主次/流向)
  • 内容越出金色内容线
  • 使用子层标签文字(如"接入层/能力层")代替视觉层次

十四、叙事结构参考(来自实际项目)

成功的幻灯片叙事顺序:

S1  封面 — 品牌标识 + 核心定位
S2  问题层(管理视角)— 组织痛点,三列对比结构
S3  问题层(用户视角)— 第一人称叙事,流动性痛点
S4  解法框架 — 范式转换,飞轮模型
S5  产品架构 — 竖向三层(组织→项目→个人)
S6  技术架构 — 竖向堆叠,核心层居中最宽
S7  竞品对比 — 表格 + 底部三列差异说明
S8  客户画像 — 三类场景,中间列高亮
S9  结束页 — 叙事收尾 + 金句 + 行动号召

十五、完整页面模板

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>项目名称</title>
<style>
* { margin:0; padding:0; box-sizing:border-box; }
:root {
  --primary:#0D0D0D; --accent:#E8C547; --bg:#0D0D0D;
  --white:#FFFFFF; --border:rgba(255,255,255,0.10);
  --text:rgba(255,255,255,0.88); --muted:rgba(255,255,255,0.45);
  --card:#1A1A1A; --card2:#222222;
  --fs-body:12px; --fs-title:16px;
  --gap-inner:4px; --gap-item:8px; --gap-block:14px; --lh:1.65;
}
body {
  font-family:-apple-system,'PingFang SC','Microsoft YaHei',sans-serif;
  background:#111111; display:flex; flex-direction:column;
  align-items:center; padding:32px 0 80px; gap:32px; min-height:100vh;
}
.slide {
  width:1123px; height:795px; background:var(--bg);
  position:relative; overflow:hidden; border-radius:4px;
  box-shadow:0 4px 32px rgba(0,0,0,0.6);
  border:1px solid rgba(255,255,255,0.15);
  flex-shrink:0; display:flex; flex-direction:column;
}
.slide::before {
  content:''; position:absolute; inset:36px;
  border:1px solid rgba(232,197,71,0.30);
  border-radius:2px; pointer-events:none; z-index:999;
}
.slide * { font-size:var(--fs-body); }
h2,h3,.sh-section,.sh-title,.big-label,
.slide-title,.cover-title,.feat-title,.card-title,
.num-big,.step-title,.layer-name,.pain-title { font-size:var(--fs-title); }
.slide-header {
  height:68px; background:#111111;
  display:flex; align-items:center; justify-content:space-between;
  padding:0 52px 0 0; margin:36px 36px 0;
  border-bottom:1px solid rgba(255,255,255,0.06); flex-shrink:0;
}
.sh-left { display:flex; align-items:center; height:100%; }
.sh-bar  { width:3px; height:100%; background:var(--accent); flex-shrink:0; margin-left:-1px; }
.sh-text { padding:0 0 0 16px; }
.sh-section { color:var(--accent); font-weight:700; letter-spacing:.12em; text-transform:uppercase; display:block; margin-bottom:4px; }
.sh-title   { color:var(--text); font-weight:600; display:block; }
.sh-right { display:flex; align-items:center; gap:14px; }
.sh-logo {
  width:36px; height:36px; background:#1A1A1A;
  border:2px solid var(--accent); border-radius:6px;
  display:flex; align-items:center; justify-content:center;
  font-weight:900; color:var(--accent);
}
.sh-page { color:var(--muted); }
.slide-body {
  padding:14px 52px 14px; margin:0 36px 36px;
  display:flex; flex-direction:column;
  justify-content:space-between; gap:var(--gap-block);
  flex:1; min-height:0;
}
.slide-cols {
  padding:14px 52px 14px; margin:0 36px 36px;
  display:flex; gap:var(--gap-block);
  align-items:stretch; flex:1; min-height:0;
}
.col { display:flex; flex-direction:column; justify-content:space-between; gap:var(--gap-block); flex:1; min-height:0; }
.card    { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:16px 18px; position:relative; overflow:hidden; }
.card-hl { background:#111111; border:2px solid var(--accent); border-radius:10px; padding:16px 18px; }
.tag     { display:inline-block; padding:2px 9px; border-radius:20px; font-weight:700; background:rgba(232,197,71,.12); border:1px solid rgba(232,197,71,.35); color:var(--accent); }
.tag-m   { display:inline-block; padding:2px 9px; border-radius:20px; font-weight:700; background:var(--card2); border:1px solid var(--border); color:var(--muted); }
.chip    { background:#1A1A1A; border:1px solid rgba(232,197,71,0.3); border-radius:5px; padding:3px 10px; color:var(--accent); font-family:monospace; }
.divider { width:48px; height:2px; background:var(--accent); border-radius:1px; margin:10px 0; }
.sub     { color:var(--muted); margin-bottom:var(--gap-block); line-height:var(--lh); }
.nav {
  position:fixed; bottom:20px; left:50%; transform:translateX(-50%);
  display:flex; align-items:center; gap:14px; z-index:200;
  background:rgba(17,17,17,.94); border:1px solid var(--border);
  border-radius:8px; padding:7px 16px;
}
.nb { background:#1A1A1A; border:1px solid var(--border); color:var(--text); padding:5px 18px; border-radius:5px; cursor:pointer; transition:all .2s; }
.nb:hover { border-color:var(--accent); color:var(--accent); }
.nb:disabled { opacity:.22; cursor:default; }
.dots { display:flex; gap:8px; align-items:center; }
.dot  { width:5px; height:5px; border-radius:3px; background:var(--muted); cursor:pointer; transition:all .3s; }
.dot.active { width:18px; background:var(--accent); }
@media print {
  @page { size:A4 landscape; margin:0; }
  body { background:#0D0D0D; padding:0; gap:0; }
  .nav { display:none; }
  .slide { page-break-after:always; break-after:page; border-radius:0; box-shadow:none; border:none; margin:0; width:100vw; height:100vh; }
  .slide:last-child { page-break-after:avoid; break-after:avoid; }
}
</style>
</head>
<body>

<!-- S1 封面 -->
<div class="slide" id="s1">
  <!-- 封面内容 -->
</div>

<!-- S2 -->
<div class="slide" id="s2">
  <div class="slide-header">
    <div class="sh-left">
      <div class="sh-bar"></div>
      <div class="sh-text">
        <span class="sh-section">SECTION</span>
        <span class="sh-title">幻灯片标题</span>
      </div>
    </div>
    <div class="sh-right">
      <div class="sh-logo">iD</div>
      <span class="sh-page">02 / N</span>
    </div>
  </div>
  <div class="slide-body">
    <!-- 内容 -->
  </div>
</div>

<!-- NAV -->
<div class="nav" id="nav">
  <button class="nb" id="prevBtn" onclick="go(cur-1)" disabled>← 上一页</button>
  <div class="dots" id="dots"></div>
  <button class="nb" id="nextBtn" onclick="go(cur+1)">下一页 →</button>
</div>

<script>
const N=2; let cur=0;
const slides=document.querySelectorAll('.slide');
const dotsEl=document.getElementById('dots');
const prev=document.getElementById('prevBtn');
const next=document.getElementById('nextBtn');
slides.forEach((_,i)=>{
  const d=document.createElement('div');
  d.className='dot'+(i===0?' active':'');
  d.onclick=()=>go(i); dotsEl.appendChild(d);
});
function go(n){
  if(n<0||n>=N)return; cur=n;
  slides[cur].scrollIntoView({behavior:'smooth',block:'center'});
  document.querySelectorAll('.dot').forEach((d,i)=>d.classList.toggle('active',i===cur));
  prev.disabled=cur===0; next.disabled=cur===N-1;
}
document.addEventListener('keydown',e=>{
  if(e.key==='ArrowRight'||e.key==='ArrowDown')go(cur+1);
  if(e.key==='ArrowLeft' ||e.key==='ArrowUp')  go(cur-1);
});
</script>
</body>
</html>

十六、验证检查清单

制作完成后逐项核查:

  • #000 / #fff 等3位简写颜色
  • 无硬编码 font-size(封面大标题除外)
  • 所有页面 overflow:hidden,无内容溢出
  • Header 和 Body 的 margin 均为 36px,内容不越出金色线
  • justify-content:space-between,无大片空白
  • 页码 sh-page 总数与实际页数一致
  • JS 中 const N 等于实际页数
  • 每张幻灯片 id="sN" 连续无缺漏
  • 每张 .slide</div> 正确关闭(不嵌套到下一张)


## 七、总结与推荐
本HTML幻灯片制作规范Skill,精准匹配**极简大气**PPT制作需求,兼顾效率与质量,解决传统PPT格式错乱、制作低效问题,适配学术、职场等多类正式场景。相比其他PPT制作方式,在标准化、兼容性、复用性上优势明显,适合追求高效、注重视觉专业感的用户使用,是非开发场景PPT制作的优质选择。

## 八、效果图
![image|690x486](upload://urRQv2eW7XELmT9vOYjoE3EoqOZ.png)
![image|690x498](upload://xr8XMGOmrKhjE1JnOBgbybbXX4l.png)
![image|670x500](upload://x8MyQCs3u2CijdM7mEPYUcAKaUz.png)
2 个赞

提示词部分从第四节部分断开了,这个可以优化下或者发压缩包格式嘛

在这下载:ppt.zip - 蓝奏云

好东西 点赞