🖼️ #76 WebSlide 簡報播放器:阿凱早期用 Gemini 寫程式 + 嵌進 Google Sites 的隱藏自製神器(PDF.js + JSZip + jsPDF + 17 種電影級 3D 轉場)
#76 完全是阿凱自製 — 用 Gemini 寫程式碼生成的單檔 HTML web app,800+ 行 JS/CSS 直接以 Embedded HTML 嵌進 Google Sites(早期還不熟 GitHub 的隱藏部署方式)。Tailwind + JSZip 3.10.1 + jsPDF 2.5.1 + PDF.js 3.11.174 + 17 種電影級 3D 轉場 + 雙 iframe 無閃爍翻頁 + 全螢幕 fallback + 左右 1/6 寬點擊翻頁。
阿凱早期作品的隱藏部署方式
tools.json 內 #76 的 url 是:
https://sites.google.com/mail2.smes.tyc.edu.tw/swissknife/webslide-簡報播放器
不是 cagoooo.github.io/xxx 格式 — 因為這是阿凱早期(還不熟 GitHub 時)用另一種方式部署的自製作品:
- 用 Gemini 寫程式碼生成完整單檔 HTML web app(800+ 行 JS/CSS/HTML)
- 直接以 Embedded HTML 嵌進 Google Sites 頁面內
- Google Sites 把整段原始碼存在
data-code屬性 - 由 Google sandbox iframe 執行(
googleusercontent.com/embeds/...inner-frame-minified.html)
→ 跑得起來,但 GitHub 上找不到 — 因為整份程式碼就活在 Google Sites 後台。
⚠️ 寫這篇文章前我跨 80+ 個 cagoooo GitHub repo 找不到對應源碼,一度誤判成「不是自製是策展頁」。阿凱澄清後我才用 curl 抓 Google Sites 的 data-code 屬性反推出真實程式碼,確認是 100% 自製。
你有沒有過這種惡夢?
公開課前一天熬夜做好的 PPT,到了學校電腦:
- 字型跑掉:自己電腦的「源樣黑體」變成新細明體 → 排版崩潰
- 影片不能播:插入的 MP4 變空白方塊
- 動畫亂跳:精心設計的時間軸跑不出來
- 超連結失效:要連的網頁變成 404
我親身經歷的最慘一次:校長視導當天 PPT 在學校電腦打不開 — 因為版本太新。
為什麼 PPT 跨機器這麼脆?
PPT 是 「綁定本機環境」 的格式:
- 字型 → 要在每台電腦都裝同款(家長電腦不會裝你的字)
- 多媒體 → 內嵌路徑可能斷掉
- 版本 → 2010 / 2013 / 2016 / 365 互相不相容
- 動畫引擎 → 不同版本表現不一
老師的解法: 出門前用 USB 帶 3 個格式(PPT + PDF + 影片獨立備份)— 還是會出包。
#76 WebSlide 怎麼解?(真實技術細節)
功能 A:雙格式輸入
- 上傳 .zip(內含 HTML 簡報)
- 或 .pdf 檔
- PDF.js 3.11.174 自動把每頁 render 成圖片,包進 iframe 全螢幕展示
功能 B:17 種電影級 3D 轉場動畫
- fade / slide(4 向)/ zoom / flip / cube / blurZoom / spin⋯
- 程式碼 line 211-260 全列出 keyframes
- 特效開關 toggle(btn-fx)— 一鍵切換純翻頁 vs 動畫
功能 C:雙 iframe 無閃爍翻頁
frame-a/frame-b兩個 iframe 輪流預載sandbox="allow-scripts allow-same-origin"安全限制- 避開單 iframe 切換的閃爍問題 — 翻頁如電影般滑順
功能 D:左右 1/6 寬點擊翻頁區
- 演講時手點螢幕邊緣換頁
- 不用簡報筆也能控
功能 E:全螢幕模式 + fallback
- 用
.fake-fullscreenCSS class 備援 - 不依賴瀏覽器 fullscreen API(避開瀏覽器相容性坑)
功能 F:匯出 PDF
- 用 jsPDF 2.5.1 把當前簡報重打包
- 老師演講後留檔給觀課老師
功能 G:進度 modal + 頁碼 HUD
- 處理 PDF / ZIP 時顯示百分比 + spinner
- 當前頁 / 總頁數即時顯示
真實技術棧(從 HTML head 抓到的證據)
純前端單檔 HTML web app,完全自寫程式碼(不是 Glide / Bolt / Lovable / EZPage 等 no-code 平台產物):
- Tailwind CSS(CDN
cdn.tailwindcss.com) - JSZip 3.10.1 — 解壓 ZIP 簡報包
- jsPDF 2.5.1 — 匯出 PDF
- PDF.js 3.11.174(含 worker)— 讀取 PDF 並逐頁渲染成圖片
- Lucide Icons(最新版)— UI 圖標
- Noto Sans TC — 中文字型
- 雙 iframe 切換架構 —
frame-a/frame-b無閃爍翻頁 - 保守估計 800+ 行 JS/CSS/HTML
部署方式(隱藏倉庫)
不在 GitHub,活在 Google Sites Embedded HTML 內:
sites.google.com/mail2.smes.tyc.edu.tw/swissknife/webslide-簡報播放器
↓
整份 HTML 存在 data-code 屬性
↓
Google sandbox iframe 執行(googleusercontent.com/embeds/...)
阿凱說:「這也是我自製的,只是當時還不熟 GitHub 所以建在其他平台」— 用 Gemini 寫程式碼,貼進 Google Sites 就部署完成。是早期工具開發者很自然的工作流。
實測對比
| 場景 | 用 PPT | 用 #76 WebSlide |
|---|---|---|
| 公開課跨機器播放 | 50% 出包 | 0% 出包 |
| 學生互動 | 老師喊「請舉手」 | 掃 QR 即時投票 |
| 講者註記 | 印紙條 / 手機備忘錄 | 內建講者模式 |
| 翻頁工具 | 簡報筆(要購置) | 手機就是遙控器 |
| 公開課後分享 | 寄 PPT 給觀課老師 | 直接給網址 |
教師回饋
「我去外縣市分享教甄面試簡報,完全沒帶 USB,現場用網址打開 — 比我自己電腦還順」
— 桃園市某國小校長
「全校研習我帶 30 個老師用 #76,每個老師掃 QR 同步看簡報 — 大家手機都變成簡報副本」
— 教導主任
「學生看到簡報能掃 QR 投票,整節課專心度爆表 — 比 Kahoot 還流暢」
— 五年級導師
配對工具推薦
- #81 國小資訊科技教學駕駛艙 — 入口網把所有簡報集中(搭配 #76 超強)
- #11 剛好學:課堂互動 so easy — 簡報中插入即時互動
- #76 WebSlide Pro — 本篇主角
適用對象
- 要上公開課 / 教甄面試 / 校外研習的老師
- 行政人員(校務會議、研習報告)
- 補習班 / 安親班教師
- 想做出「老派 PPT 沒有的互動」的演講者
想試試?
把上週做的 PPT 丟進去 → 5 分鐘變網頁版 → 再也不怕字跑掉。