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-284", "mangaid": "284", "zh_title": "自称贤者弟子的贤者", "hant_title": "自稱賢者弟子的賢者", "en_title": "自称贤者弟子的贤者 (Bilimanga #284)", "author": "すえみつぢっか / りゅうせんひろつぐ / 藤ちょこ", "tags": ["转生", "异世界", "魔法", "冒险", "龙傲天", "性转", "百合", "奇幻冒险"], "zh_desc": "最有趣也最疗愈的奇幻冒险尽在本书!召唤术、战斗、旅行、美食与奇人异士!\n\r\n充满各种要素,简单来说就是「老朽超可爱!」\n\r\n\n\r\n30年前,缔造无数传说的「军势」之邓不利夫忽然消失无踪。\n\r\n以世界顶尖召唤术士,阿尔凯特王国的「九贤者」之名威震天下,\n\r\n充满威严的老术士失踪后,竟出现一名自称他弟子的少女!\n\r\n\n\r\n年轻貌美的少女米菈身怀无可匹敌的强大实力。\n\r\n而她的真实身分,竟是因为诸多原因而改头换面的\n\r\n邓不利夫本人──!?\n\n📚 作品信息:作者 すえみつぢっか / りゅうせんひろつぐ / 藤ちょこ · 评分 9.6 · 共收录 15 卷 / 85 话章节目录与高清彩页/条漫预览。", "hant_desc": "最有趣也最療癒的奇幻冒險盡在本書!召喚術、戰鬥、旅行、美食與奇人異士!\n\r\n充滿各種要素,簡單來說就是「老朽超可愛!」\n\r\n\n\r\n30年前,締造無數傳說的「軍勢」之鄧不利夫忽然消失無蹤。\n\r\n以世界頂尖召喚術士,阿爾凱特王國的「九賢者」之名威震天下,\n\r\n充滿威嚴的老術士失蹤後,竟出現一名自稱他弟子的少女!\n\r\n\n\r\n年輕貌美的少女米菈身懷無可匹敵的強大實力。\n\r\n而她的真實身分,竟是因為諸多原因而改頭換面的\n\r\n鄧不利夫本人──!?\n\n📚 作品資訊:作者 すえみつぢっか / りゅうせんひろつぐ / 藤ちょこ · 評分 9.6 · 共收錄 15 卷 / 85 話章節目錄與高清彩頁/條漫預覽。", "en_desc": "Popular serialized manga '自称贤者弟子的贤者' (自稱賢者弟子的賢者) by すえみつぢっか / りゅうせんひろつぐ / 藤ちょこ. Includes 15 volumes and 85 chapters with full online vertical/page-flip web reader.", "pages": ["https://media.huangguodrama.ai/motion/comics/bilimanga-284/page_01.jpg", "https://media.huangguodrama.ai/motion/comics/bilimanga-284/page_02.jpg", "https://media.huangguodrama.ai/motion/comics/bilimanga-284/page_03.jpg", "https://media.huangguodrama.ai/motion/comics/bilimanga-284/page_04.jpg", "https://media.huangguodrama.ai/motion/comics/bilimanga-284/page_05.jpg", "https://media.huangguodrama.ai/motion/comics/bilimanga-284/page_06.jpg"], "volumes": [{"title_hant": "自稱賢者弟子的賢者 1", "title_zh": "自称贤者弟子的贤者 1", "cover_id": 523368, "first_chap_id": 24254, "cover_url": "https://i.motiezw.com/cover/284/523368.jpg"}, {"title_hant": "自稱賢者弟子的賢者 2", "title_zh": "自称贤者弟子的贤者 2", "cover_id": 523524, "first_chap_id": 24263, "cover_url": "https://i.motiezw.com/cover/284/523524.jpg"}, {"title_hant": "自稱賢者弟子的賢者 3", "title_zh": "自称贤者弟子的贤者 3", "cover_id": 523699, "first_chap_id": 24271, "cover_url": "https://i.motiezw.com/cover/284/523699.jpg"}, {"title_hant": "自稱賢者弟子的賢者 4", "title_zh": "自称贤者弟子的贤者 4", "cover_id": 523841, "first_chap_id": 24278, "cover_url": "https://i.motiezw.com/cover/284/523841.jpg"}, {"title_hant": "自稱賢者弟子的賢者 5", "title_zh": "自称贤者弟子的贤者 5", "cover_id": 524005, "first_chap_id": 24286, "cover_url": "https://i.motiezw.com/cover/284/524005.jpg"}, {"title_hant": "自稱賢者弟子的賢者 6", "title_zh": "自称贤者弟子的贤者 6", "cover_id": 524160, "first_chap_id": 24292, "cover_url": "https://i.motiezw.com/cover/284/524160.jpg"}, {"title_hant": "自稱賢者弟子的賢者 7", "title_zh": "自称贤者弟子的贤者 7", "cover_id": 524319, "first_chap_id": 24299, "cover_url": "https://i.motiezw.com/cover/284/524319.jpg"}, {"title_hant": "自稱賢者弟子的賢者 8", "title_zh": "自称贤者弟子的贤者 8", "cover_id": 524478, "first_chap_id": 24306, "cover_url": "https://i.motiezw.com/cover/284/524478.jpg"}, {"title_hant": "自稱賢者弟子的賢者 9", "title_zh": "自称贤者弟子的贤者 9", "cover_id": 524637, "first_chap_id": 24313, "cover_url": "https://i.motiezw.com/cover/284/524637.jpg"}, {"title_hant": "自稱賢者弟子的賢者 10", "title_zh": "自称贤者弟子的贤者 10", "cover_id": 524806, "first_chap_id": 24321, "cover_url": "https://i.motiezw.com/cover/284/524806.jpg"}, {"title_hant": "自稱賢者弟子的賢者 11", "title_zh": "自称贤者弟子的贤者 11", "cover_id": 1878607, "first_chap_id": 68226, "cover_url": "https://i.motiezw.com/cover/284/1878607.jpg"}, {"title_hant": "自稱賢者弟子的賢者 12", "title_zh": "自称贤者弟子的贤者 12", "cover_id": 2772083, "first_chap_id": 68232, "cover_url": "https://i.motiezw.com/cover/284/2772083.jpg"}], "chapters": [{"cid": "24254", "title": "Summon1〔EnteringAlcait〕", "title_zh": "Summon1〔EnteringAlcait〕"}, {"cid": "24255", "title": "Summon2〔鄧不利夫〕", "title_zh": "Summon2〔邓不利夫〕"}, {"cid": "24256", "title": "Summon3〔九賢者〕", "title_zh": "Summon3〔九贤者〕"}, {"cid": "24257", "title": "Summon4〔魔導工學〕", "title_zh": "Summon4〔魔导工学〕"}, {"cid": "24258", "title": "Summon5〔魔獸來襲〕", "title_zh": "Summon5〔魔兽来袭〕"}, {"cid": "24259", "title": "Summon6〔暗黑猛獸〕", "title_zh": "Summon6〔暗黑猛兽〕"}, {"cid": "24260", "title": "Summon7〔邁向下一步〕", "title_zh": "Summon7〔迈向下一步〕"}, {"cid": "24261", "title": "全新短篇小說〔所羅門王平凡的日常〕", "title_zh": "全新短篇小说〔所罗门王平凡的日常〕"}, {"cid": "24263", "title": "Summon8〔科羅納克〕", "title_zh": "Summon8〔科罗纳克〕"}, {"cid": "24264", "title": "Summon9〔緋紅鐘琴〕", "title_zh": "Summon9〔绯红钟琴〕"}, {"cid": "24265", "title": "Summon10〔N武神〕", "title_zh": "Summon10〔N武神〕"}, {"cid": "24266", "title": "Summon11〔暗丞之間〕", "title_zh": "Summon11〔暗丞之间〕"}, {"cid": "24267", "title": "Summon12〔地下神殿〕", "title_zh": "Summon12〔地下神殿〕"}, {"cid": "24268", "title": "Summon13〔惡魔〕", "title_zh": "Summon13〔恶魔〕"}, {"cid": "24271", "title": "Summon14〔召喚術士的仙術〕", "title_zh": "Summon14〔召唤术士的仙术〕"}, {"cid": "24272", "title": "Summon15〔一波未平一波又起〕", "title_zh": "Summon15〔一波未平一波又起〕"}, {"cid": "24273", "title": "Summon16〔強襲科羅納克〕", "title_zh": "Summon16〔强袭科罗纳克〕"}, {"cid": "24274", "title": "Summon17〔團長賽羅〕", "title_zh": "Summon17〔团长赛罗〕"}, {"cid": "24270", "title": "Summon17.5〔慶功宴之中〕", "title_zh": "Summon17.5〔庆功宴之中〕"}, {"cid": "24275", "title": "Summon18〔在這個世界生活〕", "title_zh": "Summon18〔在这个世界生活〕"}, {"cid": "24276", "title": "EX Summon〔片刻小歇〕", "title_zh": "EX Summon〔片刻小歇〕"}, {"cid": "24278", "title": "Summon19〔起始之日〕", "title_zh": "Summon19〔起始之日〕"}, {"cid": "24279", "title": "Summon20〔為了拯救這個世界的人〕", "title_zh": "Summon20〔为了拯救这个世界的人〕"}, {"cid": "24280", "title": "Summon21〔危害精靈之人〕", "title_zh": "Summon21〔危害精灵之人〕"}, {"cid": "24281", "title": "Summon22〔術技審查會〕", "title_zh": "Summon22〔术技审查会〕"}, {"cid": "24282", "title": "Summon23〔薔薇召喚陣〕", "title_zh": "Summon23〔蔷薇召唤阵〕"}, {"cid": "24283", "title": "Summon24〔召喚術的未來〕", "title_zh": "Summon24〔召唤术的未来〕"}, {"cid": "24286", "title": "Summon25〔審查決鬥〕", "title_zh": "Summon25〔审查决斗〕"}, {"cid": "24287", "title": "Summon26〔能替召喚術科做的事〕", "title_zh": "Summon26〔能替召唤术科做的事〕"}, {"cid": "24285", "title": "Summon26.5〔艾瑪樂蒂和髮型問題〕", "title_zh": "Summon26.5〔艾玛乐蒂和发型问题〕"}, {"cid": "24288", "title": "Summon27〔召喚術的應用〕", "title_zh": "Summon27〔召唤术的应用〕"}, {"cid": "24289", "title": "Summon28〔皇龍艾森佛德〕", "title_zh": "Summon28〔皇龙艾森佛德〕"}, {"cid": "24290", "title": "Summon29〔銀之連塔〕", "title_zh": "Summon29〔银之连塔〕"}, {"cid": "24292", "title": "Summon30〔無法壓抑的心Q〕", "title_zh": "Summon30〔无法压抑的心Q〕"}, {"cid": "24293", "title": "Summon31〔起始的早晨〕", "title_zh": "Summon31〔起始的早晨〕"}, {"cid": "24294", "title": "Summon32〔仙術士少N〕", "title_zh": "Summon32〔仙术士少N〕"}, {"cid": "24295", "title": "Summon33〔迷宮中的光明〕", "title_zh": "Summon33〔迷宫中的光明〕"}, {"cid": "24296", "title": "Summon34〔驚奇屋〕", "title_zh": "Summon34〔惊奇屋〕"}, {"cid": "24297", "title": "Summon35〔下一段冒險〕", "title_zh": "Summon35〔下一段冒险〕"}, {"cid": "24299", "title": "Summon36〔靈域中的邂逅〕", "title_zh": "Summon36〔灵域中的邂逅〕"}, {"cid": "24300", "title": "Summon37〔反抗組織〕", "title_zh": "Summon37〔反抗组织〕"}, {"cid": "24301", "title": "Summon38〔五十鈴聯盟〕", "title_zh": "Summon38〔五十铃联盟〕"}, {"cid": "24303", "title": "Summon40〔歸宿〕", "title_zh": "Summon40〔归宿〕"}, {"cid": "24304", "title": "EX Summon〔途中下馬的悠閒旅程〕", "title_zh": "EX Summon〔途中下马的悠闲旅程〕"}, {"cid": "24306", "title": "Summon41〔鐵道之城〕", "title_zh": "Summon41〔铁道之城〕"}, {"cid": "24307", "title": "Summon42〔列車上的一景〕", "title_zh": "Summon42〔列车上的一景〕"}, {"cid": "24308", "title": "Summon43〔通往天空的道路〕", "title_zh": "Summon43〔通往天空的道路〕"}, {"cid": "24309", "title": "Summon44〔真正的賢者的弟子〕", "title_zh": "Summon44〔真正的贤者的弟子〕"}, {"cid": "24310", "title": "Summon45〔天上雷霆〕", "title_zh": "Summon45〔天上雷霆〕"}, {"cid": "24311", "title": "Summon46〔天上的足跡〕", "title_zh": "Summon46〔天上的足迹〕"}, {"cid": "24313", "title": "Summon47〔魔悻的魅力〕", "title_zh": "Summon47〔魔悻的魅力〕"}, {"cid": "24314", "title": "Summon48〔鐵道邂逅〕", "title_zh": "Summon48〔铁道邂逅〕"}, {"cid": "24315", "title": "Summon49〔來自暗影之人〕", "title_zh": "Summon49〔来自暗影之人〕"}, {"cid": "24316", "title": "Summon50〔怨念之刃〕", "title_zh": "Summon50〔怨念之刃〕"}, {"cid": "24317", "title": "Summon51〔聯繫的黑暗〕", "title_zh": "Summon51〔联系的黑暗〕"}, {"cid": "24318", "title": "Summon52〔工匠的手藝〕", "title_zh": "Summon52〔工匠的手艺〕"}, {"cid": "24321", "title": "Summon57〔甜蜜假日〕", "title_zh": "Summon57〔甜蜜假日〕"}, {"cid": "24322", "title": "Summon58〔拓展的景S〕", "title_zh": "Summon58〔拓展的景S〕"}, {"cid": "24320", "title": "Summon58.5〔米菈的房間〕", "title_zh": "Summon58.5〔米菈的房间〕"}, {"cid": "24323", "title": "Summon59〔森林深處的祕密〕", "title_zh": "Summon59〔森林深处的秘密〕"}]};
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>