Back to discovery
精靈幻想記
Comic · 繁體中文

精靈幻想記

利歐是居住在貧民窟的孤兒,某天他開始發高燒,之後一位日本大學生‧天川真人的記憶突然浮現在他的腦海,兩人的記憶造成他思緒的混亂,同時他也隱約感覺到自己體內有股魔力。之後他遇上了一起綁架事件,儘管他使用體內的魔力擊退了敵人,卻被當成是嫌犯帶回王城審問。幸好遭到綁架的第二公主‧芙蘿菈醒來,才得以洗刷他的冤屈。 📚 作品資訊:作者 みなづきふたご / 北山結莉 / Riv · 評分 8.0 · 共收錄 13 卷 / 69 話章節目錄與高清彩頁/條漫預覽。 📖 線上漫畫閱讀器:https://media.huangguodrama.ai/motion/comics/bilimanga-1045/index.html

Comic

Watch Full Multi-Episode Series & Story Continuations

Keep exploring the world of 精靈幻想記: binge same-genre multi-episode vertical dramas, chat with AI characters in interactive roleplay, or read full web novel adaptations across the Huangguo network.

Watch and read details

Available now
10 available images
Reading language
简体中文

Content record updated .

Availability describes the media currently listed here. A preview is not a complete series; more episodes or a release schedule are not promised.

Read & Watch 精靈幻想記 Online — FAQ

Explore 精靈幻想記 online in your browser on Reelshorts. 10 available images.

Where can I read or watch 精靈幻想記 online?
Watch 精靈幻想記 full episodes online free (no app coins or paywall, instant web player & Dailymotion alternative) or read full chapters directly in your browser on Reelshorts (https://reelshorts.app/title/1015925) and Huangguo Reads (reads.reelshorts.app). Current availability: 10 available images.
What other collections are available on Reelshorts?
Browse Readable Novels, Short Dramas to Watch Online, Alpha King & Fated Mate Wolf Pack Dramas, Revenge Heiress & Betrayed Wife Comeback, Secret Billionaire Baby & Hidden Identity, Best Free DramaBox & ShortMax Alternatives, Top Chinese Short Dramas with English Subtitles, and Visual Stories in the Huangguo catalog.
简体中文

漫画简介与全卷章节目录

【精灵幻想记(精靈幻想記)· 漫画导览与全卷目录】

作者:みなづきふたご / 北山结莉 / Riv

评分:8.0

标签:转生 / 魔法 / 龙傲天 / 后宫 / 青梅竹马 / 妹妹 / 奇幻冒险 / 日本漫画

在线漫画阅读器:https://media.huangguodrama.ai/motion/comics/bilimanga-1045/index.html

■ 剧情简介:

利欧是居住在贫民窟的孤儿,某天他开始发高烧,之后一位日本大学生‧天川真人的记忆突然浮现在他的脑海,两人的记忆造成他思绪的混乱,同时他也隐约感觉到自己体内有股魔力。之后他遇上了一起绑架事件,尽管他使用体内的魔力击退了敌人,却被当成是嫌犯带回王城审问。幸好遭到绑架的第二公主‧芙萝菈醒来,才得以洗刷他的冤屈。

📚 作品信息:作者 みなづきふたご / 北山结莉 / Riv · 评分 8.0 · 共收录 13 卷 / 69 话章节目录与高清彩页/条漫预览。

■ 收录分卷(共 13 卷):

• 精灵幻想记 1

• 精灵幻想记 2

• 精灵幻想记 3

• 精灵幻想记 4

• 精灵幻想记 5

• 精灵幻想记 6

• 精灵幻想记 7

• 精灵幻想记 8

• 精灵幻想记 9

• 精灵幻想记 10

• 精灵幻想记 11

• 精灵幻想记 12

• 精灵幻想记 13

■ 章节目录(前 69 话 / 共 69 话):

• 第一话 利欧与春人

• 第二话 春人的记忆

• 第三话 魔力

• 第四话 贵族

• 第五话 贝尔托姆王立学院

• 第六话 放学后个人辅导

• 特别短篇SS

• 特别加笔漫画

• 第七话 技能提升

• 第八话 旁人的眼光

• 第九话 决心

• 第十话 最后的课程

• 第十一话 利欧前进的道路

• 特别加笔漫画

• 第十二话 一起GD日子的人们

• 第十三话 来到阿曼多,记得要吃义大利汤面!

• 第十四话 六花商会的萝黛

• 第十五话 相关的人们

• 第十六话 莱娣法

• 特别加笔漫画

• 第十八话 精灵之民

• 第十九话 精灵族的故乡

• 第二十话 精灵朵莉艾斯

• 第二十一话 在故乡的生活

• 特别加笔漫画

• 第22话

• 第23话

• 第24话

• 第25话

• 第26话

• 第27话

• 第28话

• 第29话

• 第30话

• 第31话

• 附录漫画

• 第32话

• 第33话

• 第34话

• 第35话

• 第36话

• 第37话

• 第38话

• 第39话

• 第40话

• 第41话

• 附录漫画

• 第42话机翻

• 第43话机翻

• 第44话机翻

• 第45话机翻

• 第46话机翻

• 第47话机翻

• 第48话机翻

• 第49话机翻

• 第50话机翻

• 第51话机翻

• 第52话机翻

• 第53话机翻

• 第54话机翻

• 第55话机翻

• 第57话机翻

• 第58话机翻

• 第59话机翻

• 第60话机翻

• 第61话机翻

• 第62话机翻

• 第63话机翻

• 第64话机翻

首章高清条漫/翻页画页预览

# 精灵幻想记 · 首章高清画页连载预览

> 在线完整下拉/翻页阅读器:https://media.huangguodrama.ai/motion/comics/bilimanga-1045/index.html

![精灵幻想记 - 第 1 页](https://media.huangguodrama.ai/motion/comics/bilimanga-1045/page_01.jpg)

![精灵幻想记 - 第 2 页](https://media.huangguodrama.ai/motion/comics/bilimanga-1045/page_02.jpg)

![精灵幻想记 - 第 3 页](https://media.huangguodrama.ai/motion/comics/bilimanga-1045/page_03.jpg)

![精灵幻想记 - 第 4 页](https://media.huangguodrama.ai/motion/comics/bilimanga-1045/page_04.jpg)

![精灵幻想记 - 第 5 页](https://media.huangguodrama.ai/motion/comics/bilimanga-1045/page_05.jpg)

![精灵幻想记 - 第 6 页](https://media.huangguodrama.ai/motion/comics/bilimanga-1045/page_06.jpg)

HTML5 在线漫画阅读器 (index.html)

<!DOCTYPE html>

<html lang="zh-CN">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=3,user-scalable=yes">

<title>精灵幻想记 - 在线漫画阅读器</title>

<style>

*{box-sizing:border-box;margin:0;padding:0}

body{background:#0d0f17;color:#f1f5f9;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;min-height:100vh;display:flex;flex-direction:column}

header{position:sticky;top:0;z-index:50;background:rgba(13,15,23,0.92);backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,0.09);padding:10px 16px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}

.brand{display:flex;align-items:center;gap:10px}

.badge{background:linear-gradient(135deg,#ec4899,#8b5cf6);color:#fff;font-size:11px;font-weight:700;padding:3px 8px;border-radius:99px}

.title{font-size:16px;font-weight:700;color:#fff}

.controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

button{background:rgba(255,255,255,0.08);color:#e2e8f0;border:1px solid rgba(255,255,255,0.14);padding:6px 12px;border-radius:8px;font-size:12px;cursor:pointer;transition:.18s}

button:hover,button.active{background:#ec4899;color:#fff;border-color:#ec4899}

.hero{max-width:920px;margin:16px auto;padding:18px;background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.08);border-radius:14px;display:flex;gap:18px;align-items:flex-start}

.hero img{width:120px;height:160px;object-fit:cover;border-radius:10px;flex-shrink:0;box-shadow:0 8px 24px rgba(0,0,0,0.45)}

.hero-meta h1{font-size:20px;margin-bottom:6px}

.hero-meta .sub{font-size:13px;color:#94a3b8;margin-bottom:8px}

.tags{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}

.tag{background:rgba(236,72,153,0.16);color:#f472b6;padding:2px 8px;border-radius:6px;font-size:11px}

.desc{font-size:13px;line-height:1.6;color:#cbd5e1}

.reader-wrap{max-width:860px;width:100%;margin:0 auto 40px;padding:0 8px;flex:1}

.scroll-mode .page-card{margin-bottom:10px;background:#161925;border-radius:8px;overflow:hidden;box-shadow:0 6px 20px rgba(0,0,0,0.4)}

.scroll-mode .page-card img{width:100%;height:auto;display:block}

.page-footer{text-align:center;font-size:11px;color:#64748b;padding:4px 0}

.flip-controls{display:none;justify-content:center;align-items:center;gap:14px;margin:14px 0}

.flip-mode .flip-controls{display:flex}

.drawer{display:none;max-width:920px;margin:0 auto 20px;padding:16px;background:rgba(255,255,255,0.04);border-radius:12px;border:1px solid rgba(255,255,255,0.1)}

.drawer.open{display:block}

.chap-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;margin-top:10px}

.chap-item{padding:8px 10px;background:rgba(255,255,255,0.06);border-radius:8px;font-size:12px;color:#e2e8f0;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.chap-item:hover{background:rgba(236,72,153,0.28)}

@media(max-width:600px){.hero{flex-direction:column;align-items:center;text-align:center}.tags{justify-content:center}}

</style>

</head>

<body>

<header>

<div class="brand">

<span class="badge">BILIMANGA · 统一媒体库</span>

<span class="title" id="hdrTitle"></span>

</div>

<div class="controls">

<button id="btnScroll" class="active" onclick="setMode('scroll')">条漫下拉模式</button>

<button id="btnFlip" onclick="setMode('flip')">单页翻页模式</button>

<button onclick="toggleCatalog()">章节目录 (<span id="chapCount">0</span>)</button>

<button onclick="cycleLang()" id="btnLang">繁/簡/EN</button>

</div>

</header>

<section class="hero">

<img id="heroCover" src="" alt="cover">

<div class="hero-meta">

<h1 id="heroTitle"></h1>

<div class="sub" id="heroSub"></div>

<div class="tags" id="heroTags"></div>

<p class="desc" id="heroDesc"></p>

</div>

</section>

<section class="drawer" id="catDrawer">

<h3 style="font-size:14px;margin-bottom:6px">全卷章节目录 (点击切换预览章节)</h3>

<div class="chap-grid" id="chapGrid"></div>

</section>

<div class="reader-wrap scroll-mode" id="readerWrap">

<div class="flip-controls">

<button onclick="stepPage(-1)">◀ 上一页</button>

<span id="pageIndicator" style="font-size:13px;color:#cbd5e1">1 / 1</span>

<button onclick="stepPage(1)">下一页 ▶</button>

</div>

<div id="pagesContainer"></div>

</div>

<script>

const COMIC = {"slug": "bilimanga-1045", "mangaid": "1045", "zh_title": "精灵幻想记", "hant_title": "精靈幻想記", "en_title": "精灵幻想记 (Bilimanga #1045)", "author": "みなづきふたご / 北山结莉 / Riv", "tags": ["转生", "魔法", "龙傲天", "后宫", "青梅竹马", "妹妹", "奇幻冒险", "日本漫画"], "zh_desc": "利欧是居住在贫民窟的孤儿,某天他开始发高烧,之后一位日本大学生‧天川真人的记忆突然浮现在他的脑海,两人的记忆造成他思绪的混乱,同时他也隐约感觉到自己体内有股魔力。之后他遇上了一起绑架事件,尽管他使用体内的魔力击退了敌人,却被当成是嫌犯带回王城审问。幸好遭到绑架的第二公主‧芙萝菈醒来,才得以洗刷他的冤屈。\n\n📚 作品信息:作者 みなづきふたご / 北山结莉 / Riv · 评分 8.0 · 共收录 13 卷 / 69 话章节目录与高清彩页/条漫预览。", "hant_desc": "利歐是居住在貧民窟的孤兒,某天他開始發高燒,之後一位日本大學生‧天川真人的記憶突然浮現在他的腦海,兩人的記憶造成他思緒的混亂,同時他也隱約感覺到自己體內有股魔力。之後他遇上了一起綁架事件,儘管他使用體內的魔力擊退了敵人,卻被當成是嫌犯帶回王城審問。幸好遭到綁架的第二公主‧芙蘿菈醒來,才得以洗刷他的冤屈。\n\n📚 作品資訊:作者 みなづきふたご / 北山結莉 / Riv · 評分 8.0 · 共收錄 13 卷 / 69 話章節目錄與高清彩頁/條漫預覽。", "en_desc": "Popular serialized manga '精灵幻想记' (精靈幻想記) by みなづきふたご / 北山结莉 / Riv. Includes 13 volumes and 69 chapters with full online vertical/page-flip web reader.", "pages": ["https://media.huangguodrama.ai/motion/comics/bilimanga-1045/page_01.jpg", "https://media.huangguodrama.ai/motion/comics/bilimanga-1045/page_02.jpg", "https://media.huangguodrama.ai/motion/comics/bilimanga-1045/page_03.jpg", "https://media.huangguodrama.ai/motion/comics/bilimanga-1045/page_04.jpg", "https://media.huangguodrama.ai/motion/comics/bilimanga-1045/page_05.jpg", "https://media.huangguodrama.ai/motion/comics/bilimanga-1045/page_06.jpg"], "volumes": [{"title_hant": "精靈幻想記 1", "title_zh": "精灵幻想记 1", "cover_id": 1859595, "first_chap_id": 86381, "cover_url": "https://i.motiezw.com/cover/1045/1859595.jpg"}, {"title_hant": "精靈幻想記 2", "title_zh": "精灵幻想记 2", "cover_id": 1859788, "first_chap_id": 86390, "cover_url": "https://i.motiezw.com/cover/1045/1859788.jpg"}, {"title_hant": "精靈幻想記 3", "title_zh": "精灵幻想记 3", "cover_id": 1859945, "first_chap_id": 86397, "cover_url": "https://i.motiezw.com/cover/1045/1859945.jpg"}, {"title_hant": "精靈幻想記 4", "title_zh": "精灵幻想记 4", "cover_id": 1860105, "first_chap_id": 86405, "cover_url": "https://i.motiezw.com/cover/1045/1860105.jpg"}, {"title_hant": "精靈幻想記 5", "title_zh": "精灵幻想记 5", "cover_id": 1860267, "first_chap_id": 86411, "cover_url": "https://i.motiezw.com/cover/1045/1860267.jpg"}, {"title_hant": "精靈幻想記 6", "title_zh": "精灵幻想记 6", "cover_id": 1860415, "first_chap_id": 86417, "cover_url": "https://i.motiezw.com/cover/1045/1860415.jpg"}, {"title_hant": "精靈幻想記 7", "title_zh": "精灵幻想记 7", "cover_id": 1860574, "first_chap_id": 86424, "cover_url": "https://i.motiezw.com/cover/1045/1860574.jpg"}, {"title_hant": "精靈幻想記 8", "title_zh": "精灵幻想记 8", "cover_id": 1860739, "first_chap_id": 86430, "cover_url": "https://i.motiezw.com/cover/1045/1860739.jpg"}, {"title_hant": "精靈幻想記 9", "title_zh": "精灵幻想记 9", "cover_id": 1863482, "first_chap_id": 86607, "cover_url": "https://i.motiezw.com/cover/1045/1863482.jpg"}, {"title_hant": "精靈幻想記 10", "title_zh": "精灵幻想记 10", "cover_id": 1863627, "first_chap_id": 86613, "cover_url": "https://i.motiezw.com/cover/1045/1863627.jpg"}, {"title_hant": "精靈幻想記 11", "title_zh": "精灵幻想记 11", "cover_id": 1863767, "first_chap_id": 86619, "cover_url": "https://i.motiezw.com/cover/1045/1863767.jpg"}, {"title_hant": "精靈幻想記 12", "title_zh": "精灵幻想记 12", "cover_id": 1863913, "first_chap_id": 86625, "cover_url": "https://i.motiezw.com/cover/1045/1863913.jpg"}], "chapters": [{"cid": "86381", "title": "第一話 利歐與春人", "title_zh": "第一话 利欧与春人"}, {"cid": "86382", "title": "第二話 春人的記憶", "title_zh": "第二话 春人的记忆"}, {"cid": "86383", "title": "第三話 魔力", "title_zh": "第三话 魔力"}, {"cid": "86384", "title": "第四話 貴族", "title_zh": "第四话 贵族"}, {"cid": "86385", "title": "第五話 貝爾托姆王立學院", "title_zh": "第五话 贝尔托姆王立学院"}, {"cid": "86386", "title": "第六話 放學後個人輔導", "title_zh": "第六话 放学后个人辅导"}, {"cid": "86387", "title": "特別短篇SS", "title_zh": "特别短篇SS"}, {"cid": "86388", "title": "特別加筆漫畫", "title_zh": "特别加笔漫画"}, {"cid": "86390", "title": "第七話 技能提升", "title_zh": "第七话 技能提升"}, {"cid": "86391", "title": "第八話 旁人的眼光", "title_zh": "第八话 旁人的眼光"}, {"cid": "86392", "title": "第九話 決心", "title_zh": "第九话 决心"}, {"cid": "86393", "title": "第十話 最後的課程", "title_zh": "第十话 最后的课程"}, {"cid": "86394", "title": "第十一話 利歐前進的道路", "title_zh": "第十一话 利欧前进的道路"}, {"cid": "86395", "title": "特別加筆漫畫", "title_zh": "特别加笔漫画"}, {"cid": "86397", "title": "第十二話 一起GD日子的人們", "title_zh": "第十二话 一起GD日子的人们"}, {"cid": "86398", "title": "第十三話 來到阿曼多,記得要吃義大利湯麵!", "title_zh": "第十三话 来到阿曼多,记得要吃义大利汤面!"}, {"cid": "86399", "title": "第十四話 六花商會的蘿黛", "title_zh": "第十四话 六花商会的萝黛"}, {"cid": "86400", "title": "第十五話 相關的人們", "title_zh": "第十五话 相关的人们"}, {"cid": "86401", "title": "第十六話 萊娣法", "title_zh": "第十六话 莱娣法"}, {"cid": "86402", "title": "特別加筆漫畫", "title_zh": "特别加笔漫画"}, {"cid": "86405", "title": "第十八話 精靈之民", "title_zh": "第十八话 精灵之民"}, {"cid": "86406", "title": "第十九話 精靈族的故鄉", "title_zh": "第十九话 精灵族的故乡"}, {"cid": "86407", "title": "第二十話 精靈朵莉艾斯", "title_zh": "第二十话 精灵朵莉艾斯"}, {"cid": "86408", "title": "第二十一話 在故鄉的生活", "title_zh": "第二十一话 在故乡的生活"}, {"cid": "86409", "title": "特別加筆漫畫", "title_zh": "特别加笔漫画"}, {"cid": "86411", "title": "第22話", "title_zh": "第22话"}, {"cid": "86412", "title": "第23話", "title_zh": "第23话"}, {"cid": "86413", "title": "第24話", "title_zh": "第24话"}, {"cid": "86414", "title": "第25話", "title_zh": "第25话"}, {"cid": "86415", "title": "第26話", "title_zh": "第26话"}, {"cid": "86417", "title": "第27話", "title_zh": "第27话"}, {"cid": "86418", "title": "第28話", "title_zh": "第28话"}, {"cid": "86419", "title": "第29話", "title_zh": "第29话"}, {"cid": "86420", "title": "第30話", "title_zh": "第30话"}, {"cid": "86421", "title": "第31話", "title_zh": "第31话"}, {"cid": "86422", "title": "附錄漫畫", "title_zh": "附录漫画"}, {"cid": "86424", "title": "第32話", "title_zh": "第32话"}, {"cid": "86425", "title": "第33話", "title_zh": "第33话"}, {"cid": "86426", "title": "第34話", "title_zh": "第34话"}, {"cid": "86427", "title": "第35話", "title_zh": "第35话"}, {"cid": "86428", "title": "第36話", "title_zh": "第36话"}, {"cid": "86430", "title": "第37話", "title_zh": "第37话"}, {"cid": "86431", "title": "第38話", "title_zh": "第38话"}, {"cid": "86432", "title": "第39話", "title_zh": "第39话"}, {"cid": "86433", "title": "第40話", "title_zh": "第40话"}, {"cid": "86434", "title": "第41話", "title_zh": "第41话"}, {"cid": "86436", "title": "附錄漫畫", "title_zh": "附录漫画"}, {"cid": "86607", "title": "第42話机翻", "title_zh": "第42话机翻"}, {"cid": "86608", "title": "第43話机翻", "title_zh": "第43话机翻"}, {"cid": "86609", "title": "第44話机翻", "title_zh": "第44话机翻"}, {"cid": "86610", "title": "第45話机翻", "title_zh": "第45话机翻"}, {"cid": "86611", "title": "第46話机翻", "title_zh": "第46话机翻"}, {"cid": "86613", "title": "第47話机翻", "title_zh": "第47话机翻"}, {"cid": "86614", "title": "第48話机翻", "title_zh": "第48话机翻"}, {"cid": "86615", "title": "第49話机翻", "title_zh": "第49话机翻"}, {"cid": "86616", "title": "第50話机翻", "title_zh": "第50话机翻"}, {"cid": "86617", "title": "第51話机翻", "title_zh": "第51话机翻"}, {"cid": "86619", "title": "第52話机翻", "title_zh": "第52话机翻"}, {"cid": "86620", "title": "第53話机翻", "title_zh": "第53话机翻"}, {"cid": "86621", "title": "第54話机翻", "title_zh": "第54话机翻"}]};

let lang = 'zh';

let mode = 'scroll';

let curPage = 0;

function renderMeta() {

const t = lang === 'zh' ? COMIC.zh_title : (lang === 'hant' ? COMIC.hant_title : COMIC.en_title);

const d = lang === 'zh' ? COMIC.zh_desc : (lang === 'hant' ? COMIC.hant_desc : COMIC.en_desc);

document.getElementById('hdrTitle').textContent = t;

document.getElementById('heroTitle').textContent = t;

document.getElementById('heroSub').textContent = `${COMIC.author} · 共 ${COMIC.volumes.length} 卷 / ${COMIC.chapters.length} 话`;

document.getElementById('heroDesc').textContent = d;

document.getElementById('heroCover').src = COMIC.pages[0] || '';

document.getElementById('chapCount').textContent = COMIC.chapters.length;

const tg = document.getElementById('heroTags');

tg.innerHTML = '';

(COMIC.tags || []).forEach(x => {

const s = document.createElement('span');

s.className = 'tag';

s.textContent = x;

tg.appendChild(s);

});

}

function renderCatalog() {

const g = document.getElementById('chapGrid');

g.innerHTML = '';

(COMIC.chapters || []).forEach((c, idx) => {

const d = document.createElement('div');

d.className = 'chap-item';

d.textContent = c.title_zh || c.title;

d.onclick = () => {

curPage = idx % COMIC.pages.length;

if (mode === 'flip') renderPages();

else document.querySelectorAll('.page-card')[curPage]?.scrollIntoView({behavior:'smooth'});

document.getElementById('catDrawer').classList.remove('open');

};

g.appendChild(d);

});

}

function renderPages() {

const wrap = document.getElementById('readerWrap');

wrap.className = 'reader-wrap ' + (mode === 'scroll' ? 'scroll-mode' : 'flip-mode');

const box = document.getElementById('pagesContainer');

box.innerHTML = '';

const list = mode === 'scroll' ? COMIC.pages : [COMIC.pages[curPage]];

list.forEach((url, i) => {

const idx = mode === 'scroll' ? i : curPage;

const card = document.createElement('div');

card.className = 'page-card';

card.innerHTML = `<img src="${url}" loading="lazy" alt="Page ${idx+1}"><div class="page-footer">第 ${idx+1} / ${COMIC.pages.length} 页 · ${COMIC.zh_title}</div>`;

if (mode === 'flip') card.onclick = () => stepPage(1);

box.appendChild(card);

});

document.getElementById('pageIndicator').textContent = `${curPage + 1} / ${COMIC.pages.length}`;

}

function setMode(m) {

mode = m;

document.getElementById('btnScroll').classList.toggle('active', m === 'scroll');

document.getElementById('btnFlip').classList.toggle('active', m === 'flip');

renderPages();

}

function stepPage(delta) {

curPage = (curPage + delta + COMIC.pages.length) % COMIC.pages.length;

renderPages();

}

function toggleCatalog() {

document.getElementById('catDrawer').classList.toggle('open');

}

function cycleLang() {

lang = lang === 'zh' ? 'hant' : (lang === 'hant' ? 'en' : 'zh');

renderMeta();

}

renderMeta();

renderCatalog();

renderPages();

</script>

</body>

</html>