- updateNavButtons: 改用数组索引查找,而非简单的+1/-1 - updateSidebarHighlight: 使用parseFloat比较章节ID - updateMobileTOCHighlight: 使用parseFloat比较章节ID - 更新版本号强制刷新缓存
597 lines
27 KiB
HTML
597 lines
27 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>蜘蛛洞穴 - 阿拉德:剑之回响</title>
|
||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||
<link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
|
||
<style>
|
||
:root {
|
||
--bg-primary: linear-gradient(135deg, #0f0c29 0%, #302b63 50%, #24243e 100%);
|
||
--text-primary: #e0e0e0;
|
||
--text-secondary: #888;
|
||
--accent-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||
--border-color: rgba(255,255,255,0.1);
|
||
--btn-bg: rgba(255,255,255,0.1);
|
||
--btn-hover: rgba(255,255,255,0.2);
|
||
}
|
||
|
||
[data-theme="light"] {
|
||
--bg-primary: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
|
||
--text-primary: #333;
|
||
--text-secondary: #666;
|
||
--border-color: rgba(0,0,0,0.1);
|
||
--btn-bg: rgba(0,0,0,0.05);
|
||
--btn-hover: rgba(0,0,0,0.1);
|
||
}
|
||
|
||
* {
|
||
margin: 0;
|
||
padding: 0;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
body {
|
||
font-family: 'Noto Serif SC', serif;
|
||
background: var(--bg-primary);
|
||
color: var(--text-primary);
|
||
line-height: 1.8;
|
||
min-height: 100vh;
|
||
transition: all 0.3s ease;
|
||
}
|
||
|
||
.container {
|
||
max-width: 800px;
|
||
margin: 0 auto;
|
||
padding: 20px;
|
||
padding-bottom: 120px;
|
||
}
|
||
|
||
/* 顶部导航 */
|
||
.top-nav {
|
||
position: fixed;
|
||
top: 0;
|
||
left: 0;
|
||
right: 0;
|
||
background: rgba(0,0,0,0.3);
|
||
backdrop-filter: blur(10px);
|
||
border-bottom: 1px solid var(--border-color);
|
||
z-index: 1000;
|
||
padding: 10px 20px;
|
||
}
|
||
|
||
.top-nav-content {
|
||
max-width: 800px;
|
||
margin: 0 auto;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
}
|
||
|
||
.nav-link {
|
||
color: var(--text-primary);
|
||
text-decoration: none;
|
||
font-family: 'Noto Sans SC', sans-serif;
|
||
font-size: 14px;
|
||
padding: 8px 16px;
|
||
background: var(--btn-bg);
|
||
border: 1px solid var(--border-color);
|
||
border-radius: 8px;
|
||
transition: all 0.3s ease;
|
||
}
|
||
|
||
.nav-link:hover {
|
||
background: var(--btn-hover);
|
||
}
|
||
|
||
.chapter-header {
|
||
text-align: center;
|
||
padding: 80px 0 40px;
|
||
border-bottom: 1px solid var(--border-color);
|
||
margin-bottom: 40px;
|
||
}
|
||
|
||
.chapter-number {
|
||
font-size: 14px;
|
||
color: var(--text-secondary);
|
||
letter-spacing: 4px;
|
||
text-transform: uppercase;
|
||
margin-bottom: 10px;
|
||
}
|
||
|
||
.chapter-title {
|
||
font-size: 32px;
|
||
font-weight: 700;
|
||
background: var(--accent-gradient);
|
||
-webkit-background-clip: text;
|
||
-webkit-text-fill-color: transparent;
|
||
background-clip: text;
|
||
margin-bottom: 20px;
|
||
}
|
||
|
||
.chapter-meta {
|
||
font-size: 14px;
|
||
color: var(--text-secondary);
|
||
}
|
||
|
||
.chapter-content {
|
||
font-size: 18px;
|
||
line-height: 2;
|
||
text-align: justify;
|
||
}
|
||
|
||
.chapter-content p {
|
||
margin-bottom: 1.5em;
|
||
text-indent: 2em;
|
||
}
|
||
|
||
.chapter-content p:first-of-type::first-letter {
|
||
font-size: 3em;
|
||
float: left;
|
||
line-height: 1;
|
||
margin-right: 8px;
|
||
margin-top: -5px;
|
||
background: var(--accent-gradient);
|
||
-webkit-background-clip: text;
|
||
-webkit-text-fill-color: transparent;
|
||
background-clip: text;
|
||
font-weight: 700;
|
||
}
|
||
|
||
/* 固定底部导航 */
|
||
.fixed-nav {
|
||
position: fixed;
|
||
bottom: 0;
|
||
left: 0;
|
||
right: 0;
|
||
background: rgba(0,0,0,0.3);
|
||
backdrop-filter: blur(10px);
|
||
border-top: 1px solid var(--border-color);
|
||
z-index: 1000;
|
||
padding: 15px 20px;
|
||
}
|
||
|
||
.fixed-nav-content {
|
||
max-width: 800px;
|
||
margin: 0 auto;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
}
|
||
|
||
.nav-btn {
|
||
padding: 12px 24px;
|
||
background: var(--btn-bg);
|
||
border: 1px solid var(--border-color);
|
||
border-radius: 8px;
|
||
color: var(--text-primary);
|
||
text-decoration: none;
|
||
transition: all 0.3s ease;
|
||
font-family: 'Noto Sans SC', sans-serif;
|
||
font-size: 14px;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.nav-btn:hover {
|
||
background: var(--btn-hover);
|
||
transform: translateY(-2px);
|
||
}
|
||
|
||
.nav-btn.disabled {
|
||
opacity: 0.3;
|
||
cursor: not-allowed;
|
||
pointer-events: none;
|
||
}
|
||
|
||
/* 右侧滚动按钮 */
|
||
.scroll-buttons {
|
||
position: fixed;
|
||
right: 20px;
|
||
bottom: 90px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 10px;
|
||
z-index: 1001;
|
||
}
|
||
|
||
.scroll-btn {
|
||
width: 40px;
|
||
height: 40px;
|
||
border-radius: 8px;
|
||
background: var(--btn-bg);
|
||
border: 1px solid var(--border-color);
|
||
color: var(--text-primary);
|
||
cursor: pointer;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
font-size: 16px;
|
||
transition: all 0.3s ease;
|
||
font-family: 'Noto Sans SC', sans-serif;
|
||
}
|
||
|
||
.scroll-btn:hover {
|
||
background: var(--btn-hover);
|
||
}
|
||
|
||
/* 侧边栏 - 标题固定,内容滚动 */
|
||
.sidebar {
|
||
position: fixed;
|
||
right: 20px;
|
||
top: 50%;
|
||
transform: translateY(-50%);
|
||
background: rgba(0,0,0,0.5);
|
||
backdrop-filter: blur(10px);
|
||
border-radius: 12px;
|
||
border: 1px solid var(--border-color);
|
||
width: 200px;
|
||
max-height: 70vh;
|
||
z-index: 999;
|
||
display: flex;
|
||
flex-direction: column;
|
||
}
|
||
|
||
.sidebar-title {
|
||
font-size: 14px;
|
||
color: var(--text-secondary);
|
||
text-transform: uppercase;
|
||
letter-spacing: 2px;
|
||
padding: 15px 20px;
|
||
border-bottom: 1px solid var(--border-color);
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
.sidebar-content {
|
||
overflow-y: auto;
|
||
padding: 10px 20px 20px;
|
||
flex: 1;
|
||
scrollbar-width: thin;
|
||
scrollbar-color: transparent transparent;
|
||
transition: scrollbar-color 0.3s ease;
|
||
}
|
||
|
||
.sidebar-content:hover {
|
||
scrollbar-color: rgba(255,255,255,0.3) transparent;
|
||
}
|
||
|
||
.sidebar-content::-webkit-scrollbar {
|
||
width: 6px;
|
||
}
|
||
|
||
.sidebar-content::-webkit-scrollbar-track {
|
||
background: transparent;
|
||
}
|
||
|
||
.sidebar-content::-webkit-scrollbar-thumb {
|
||
background: transparent;
|
||
border-radius: 3px;
|
||
transition: background 0.3s ease;
|
||
}
|
||
|
||
.sidebar-content:hover::-webkit-scrollbar-thumb {
|
||
background: rgba(255,255,255,0.3);
|
||
}
|
||
|
||
.sidebar-content:hover::-webkit-scrollbar-thumb:hover {
|
||
background: rgba(255,255,255,0.5);
|
||
}
|
||
|
||
[data-theme="light"] .sidebar-content:hover {
|
||
scrollbar-color: rgba(0,0,0,0.3) transparent;
|
||
}
|
||
|
||
[data-theme="light"] .sidebar-content:hover::-webkit-scrollbar-thumb {
|
||
background: rgba(0,0,0,0.3);
|
||
}
|
||
|
||
[data-theme="light"] .sidebar-content:hover::-webkit-scrollbar-thumb:hover {
|
||
background: rgba(0,0,0,0.5);
|
||
}
|
||
|
||
.sidebar-chapter {
|
||
display: block;
|
||
padding: 8px 0;
|
||
color: #aaa;
|
||
text-decoration: none;
|
||
font-size: 13px;
|
||
border-bottom: 1px solid rgba(255,255,255,0.05);
|
||
transition: all 0.3s ease;
|
||
line-height: 1.5;
|
||
}
|
||
|
||
.sidebar-chapter:hover {
|
||
color: #667eea;
|
||
}
|
||
|
||
.sidebar-chapter.current {
|
||
color: #667eea;
|
||
font-weight: 600;
|
||
}
|
||
|
||
@media (max-width: 1200px) {
|
||
.sidebar {
|
||
display: none;
|
||
}
|
||
}
|
||
|
||
@media (max-width: 600px) {
|
||
.chapter-title {
|
||
font-size: 24px;
|
||
}
|
||
|
||
.chapter-content {
|
||
font-size: 16px;
|
||
}
|
||
|
||
.fixed-nav-content {
|
||
gap: 10px;
|
||
}
|
||
|
||
.nav-btn {
|
||
padding: 10px 15px;
|
||
font-size: 12px;
|
||
}
|
||
|
||
.scroll-buttons {
|
||
right: 10px;
|
||
bottom: 80px;
|
||
}
|
||
|
||
.scroll-btn {
|
||
width: 36px;
|
||
height: 36px;
|
||
}
|
||
}
|
||
|
||
/* 滚动条样式 */
|
||
.sidebar::-webkit-scrollbar {
|
||
width: 4px;
|
||
}
|
||
|
||
.sidebar::-webkit-scrollbar-track {
|
||
background: transparent;
|
||
}
|
||
|
||
.sidebar::-webkit-scrollbar-thumb {
|
||
background: rgba(255,255,255,0.2);
|
||
border-radius: 2px;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<!-- 顶部导航 -->
|
||
<nav class="top-nav">
|
||
<div class="top-nav-content">
|
||
<a href="../index.html" class="nav-link">返回首页</a>
|
||
<button class="nav-link" id="themeToggle">切换主题</button>
|
||
</div>
|
||
</nav>
|
||
|
||
<div class="container">
|
||
<header class="chapter-header">
|
||
<div class="chapter-number">Chapter 31</div>
|
||
<h1 class="chapter-title">蜘蛛洞穴</h1>
|
||
</header>
|
||
|
||
<article class="chapter-content">
|
||
<p>从浅栖之地返回阿法利亚营地后,林克将摩根的笔记交给了克伦特。</p>
|
||
<p>"夏普伦……"克伦特看着笔记上的名字,脸色变得铁青,"果然是他。我早就怀疑他了。"</p>
|
||
<p>"我们现在该怎么办?"林克问。</p>
|
||
<p>克伦特沉思了一会儿:"邪龙封印的加固需要四把钥匙,分别由四个骷髅将军看守。但还有一个更紧急的问题——蜘蛛洞穴的艾克洛索最近异常活跃,如果不解决它,前往暗精灵墓地的道路就会被阻断。"</p>
|
||
<p>"艾克洛索?"</p>
|
||
<p>"一只巨大的变异蜘蛛,是蜘蛛洞穴的统治者。"克伦特解释道,"它最近开始大量繁殖小蜘蛛,如果不及时处理,整个诺伊佩拉地区都会被蜘蛛淹没。"</p>
|
||
<p>林克点点头:"明白了。蜘蛛洞穴在哪里?"</p>
|
||
<p>"浅栖之地的深处,有一条通往蜘蛛洞穴的通道。"克伦特在地图上标出位置,"小心,艾克洛索比摩根更危险。它的毒液和蛛网都非常致命。"</p>
|
||
<p>"我们会小心的。"</p>
|
||
|
||
<p>---</p>
|
||
|
||
<p>蜘蛛洞穴比浅栖之地更加阴森。</p>
|
||
<p>这里的空气中弥漫着一股腥臭味,地面上到处是粘稠的蛛丝。洞穴的墙壁上挂满了白色的蛛网,有些蛛网上还粘着动物的尸体。</p>
|
||
<p>"好恶心……"赛丽亚皱着眉头,紧紧跟在林克身后。</p>
|
||
<p>"小心别碰到那些蛛丝。"奥菲利亚提醒道,"有些蛛丝是有毒的。"</p>
|
||
<p>艾伦举起长剑,圣光在剑身上闪烁:"我感觉到很多邪恶的气息……这里到处都是蜘蛛。"</p>
|
||
<p>话音刚落,洞穴深处传来了沙沙的声响。</p>
|
||
<p>数十只巨大的蜘蛛从四面八方爬了出来。它们的身体足有脸盆大小,八只眼睛泛着红光,口中滴着绿色的毒液。</p>
|
||
<p>"战斗准备!"林克大喊。</p>
|
||
<p>蜘蛛们发起了攻击。它们的速度极快,在墙壁和天花板上自由爬行,从各个角度扑向队伍。</p>
|
||
<p>"圣光十字!"</p>
|
||
<p>艾伦的攻击击中了最前面的几只蜘蛛,但更多的蜘蛛涌了上来。其中一只蜘蛛张开嘴,喷出了一团绿色的毒液。</p>
|
||
<p>"小心!"林克一把拉过赛丽亚,躲过了毒液。毒液落在地上,发出嘶嘶的声响,地面被腐蚀出了一个小坑。</p>
|
||
<p>"这些蜘蛛会喷毒!"奥菲利亚惊呼。</p>
|
||
<p>"交给我!"赛丽亚举起法杖,"净化之光!"</p>
|
||
<p>一道白色的光芒从法杖中射出,将几只蜘蛛笼罩其中。被光芒照射的蜘蛛发出凄厉的尖叫,身体开始融化。</p>
|
||
<p>"有效!"艾伦喊道,"赛丽亚,继续用光属性攻击!"</p>
|
||
<p>但蜘蛛的数量太多了。它们源源不断地从洞穴深处涌出,仿佛无穷无尽。</p>
|
||
<p>"不能这样耗下去!"林克咬牙,"我要用新技能了!"</p>
|
||
<p>他深吸一口气,将全身的剑气凝聚在晨曦上。这是他在击败罗特斯后领悟的新招式——</p>
|
||
<p>"猛龙断空斩!"</p>
|
||
<p>林克的身形瞬间化作一道金色的龙形剑气,向前突进。剑气所过之处,所有的蜘蛛都被斩成了碎片。</p>
|
||
<p>轰——</p>
|
||
<p>剑气贯穿了整个洞穴,留下了一条长长的痕迹。数十只蜘蛛在这一击中被消灭,洞穴里到处都是蜘蛛的残肢。</p>
|
||
<p>"好……好厉害……"奥菲利亚瞪大了眼睛,"这是什么招式?"</p>
|
||
<p>"猛龙断空斩。"林克收回剑,微微喘息,"40级的剑魂技能。我也是第一次实战使用。"</p>
|
||
<p>赛丽亚跑过来,担心地看着他:"你没事吧?这个技能消耗很大吗?"</p>
|
||
<p>"有点累,但还能坚持。"林克笑了笑,"走吧,BOSS应该就在前面。"</p>
|
||
|
||
<p>---</p>
|
||
|
||
<p>洞穴的最深处,是一个巨大的地下空间。</p>
|
||
<p>这里的蛛丝更加密集,几乎将整个空间都覆盖了。在空间的中央,一只巨大的蜘蛛正趴在那里。</p>
|
||
<p>那就是艾克洛索。</p>
|
||
<p>它的身体足有一间房子那么大,八条长腿上长满了尖刺,腹部有一个巨大的红色花纹,看起来像是某种诡异的图案。</p>
|
||
<p>"这就是……艾克洛索?"赛丽亚的声音在颤抖。</p>
|
||
<p>艾克洛索缓缓转过头,八只眼睛同时盯住了入侵者。它张开嘴,发出了一声刺耳的嘶鸣。</p>
|
||
<p>然后,它动了。</p>
|
||
<p>艾克洛索的速度快得惊人,与它庞大的身躯完全不成比例。它张开嘴,喷出了三团白色的蛛网。</p>
|
||
<p>"散开!"林克大喊。</p>
|
||
<p>四人迅速散开,躲过了蛛网。蛛网落在地上,瞬间将地面粘住,如果被击中,后果不堪设想。</p>
|
||
<p>"我来吸引它的注意力!"艾伦大喊,"圣光守护!"</p>
|
||
<p>他冲上前去,长剑上燃烧着圣光。艾克洛索被圣光吸引,转头向他扑去。</p>
|
||
<p>"就是现在!"林克抓住机会,从侧翼发动攻击。</p>
|
||
<p>"流心·刺!"</p>
|
||
<p>晨曦刺入了艾克洛索的一条腿,绿色的血液喷涌而出。艾克洛索发出痛苦的嘶鸣,猛地一甩腿,将林克甩飞出去。</p>
|
||
<p>"林克!"赛丽亚惊呼。</p>
|
||
<p>林克在空中调整姿势,稳稳落地。但还没等他站稳,艾克洛索又发动了新的攻击。</p>
|
||
<p>它的腹部突然打开,发射出了数枚……导弹?</p>
|
||
<p>"导弹?!"林克瞪大了眼睛,"这蜘蛛还会发射导弹?!"</p>
|
||
<p>他急忙闪避,导弹在他身边爆炸,掀起的气浪将他震得后退了几步。</p>
|
||
<p>"这什么鬼东西……"林克苦笑,"蜘蛛都会发射导弹了?"</p>
|
||
<p>"小心!它又要攻击了!"奥菲利亚大喊。</p>
|
||
<p>艾克洛索的身体突然开始下沉,钻入了地下。</p>
|
||
<p>"它钻地了!"艾伦大喊,"大家小心脚下!"</p>
|
||
<p>地面开始震动,突然,艾克洛索从地下钻出,巨大的身体向林克撞来。</p>
|
||
<p>林克急忙翻滚躲避,但艾克洛索的攻击还没结束。它张开嘴,喷出了大量的蛛丝,将林克的退路全部封死。</p>
|
||
<p>"不好!"</p>
|
||
<p>林克被蛛丝缠住了。那些蛛丝异常坚韧,他越是挣扎,缠得越紧。</p>
|
||
<p>艾克洛索缓缓靠近,张开巨大的口器,准备给林克致命一击。</p>
|
||
<p>"林克!"赛丽亚和奥菲利亚同时尖叫。</p>
|
||
|
||
<p>---</p>
|
||
|
||
<p>就在这千钧一发之际,一道金色的光芒从天而降。</p>
|
||
<p>"圣光审判!"</p>
|
||
<p>艾伦的攻击正中艾克洛索的头部,让它发出痛苦的嘶鸣。它暂时放弃了林克,转头向艾伦扑去。</p>
|
||
<p>"好机会!"奥菲利亚大喊,扔出了几瓶炼金药剂,"火焰瓶!"</p>
|
||
<p>火焰在艾克洛索身上燃烧,但它似乎对火焰有一定的抗性,并没有受到太大的伤害。</p>
|
||
<p>"普通的火焰对它效果不大!"奥菲利亚焦急地说。</p>
|
||
<p>"让我来!"赛丽亚举起法杖,"精灵之炎!"</p>
|
||
<p>这是结合了精灵之力的高级火焰魔法,比普通的火焰更加强大。艾克洛索被火焰灼烧,发出凄厉的尖叫。</p>
|
||
<p>趁着这个机会,林克挣脱了蛛丝的束缚。他看着眼前的巨大蜘蛛,心中暗暗思考对策。</p>
|
||
<p>"它的弱点……在哪里?"</p>
|
||
<p>他注意到,艾克洛索每次发射导弹时,腹部的红色花纹都会发光。那可能就是它的弱点!</p>
|
||
<p>"艾伦!"林克大喊,"吸引它的注意力,让我接近它的腹部!"</p>
|
||
<p>"明白!"艾伦举起长剑,向艾克洛索发起了猛攻。</p>
|
||
<p>艾克洛索被艾伦吸引,转身向他扑去。林克趁机绕到了它的身后。</p>
|
||
<p>"就是现在!"</p>
|
||
<p>林克跃起,双手握住晨曦,将全部的剑气凝聚在剑身上。</p>
|
||
<p>"猛龙断空斩——!"</p>
|
||
<p>这一次,他将所有的力量都注入了这一击。金色的龙形剑气从晨曦上爆发,直直斩向艾克洛索腹部的红色花纹。</p>
|
||
<p>"嘶——!!!"</p>
|
||
<p>艾克洛索发出了前所未有的凄厉尖叫。剑气贯穿了它的腹部,绿色的血液如同喷泉般涌出。</p>
|
||
<p>它的身体开始抽搐,八条腿无力地挥舞着,最后轰然倒地。</p>
|
||
<p>巨大的蜘蛛,终于停止了挣扎。</p>
|
||
|
||
<p>---</p>
|
||
|
||
<p>战斗结束后,四人都累得瘫坐在地上。</p>
|
||
<p>"终于……结束了……"林克大口喘息着,刚才的猛龙断空斩几乎耗尽了他全部的体力。</p>
|
||
<p>"林克!"赛丽亚扑进他的怀里,"你吓死我了!被蛛丝缠住的时候,我以为……"</p>
|
||
<p>"没事了,没事了。"林克轻轻拍着她的背,"我这不是好好的吗?"</p>
|
||
<p>奥菲利亚也走了过来,虽然没有像赛丽亚那样扑进怀里,但眼中的关切之色溢于言表:"你太乱来了,那种情况下还想着攻击。"</p>
|
||
<p>"不冒险的话,怎么能赢呢?"林克笑了笑。</p>
|
||
<p>艾伦走过来,伸出手将林克拉了起来:"干得好,剑魂。你的猛龙断空斩……真的很强。"</p>
|
||
<p>"谢谢。"林克握住他的手,站了起来。</p>
|
||
<p>他看向艾克洛索的尸体,心中暗暗感慨。</p>
|
||
<p>这就是40级技能的威力吗?比之前使用的任何招式都要强大。</p>
|
||
<p>"走吧。"林克说,"回去向克伦特报告,然后准备前往暗精灵墓地。"</p>
|
||
<p>"嗯。"三个同伴同时点头。</p>
|
||
<p>他们转身离开蜘蛛洞穴,向着阿法利亚营地的方向走去。</p>
|
||
<p>邪龙斯皮兹的封印,还在等待着他们去加固。</p>
|
||
|
||
<p>---</p>
|
||
<p>(第三十一章完)</p>
|
||
</article>
|
||
</div>
|
||
|
||
<!-- 固定底部导航 -->
|
||
<nav class="fixed-nav">
|
||
<div class="fixed-nav-content">
|
||
<a href="chapter-30.html" class="nav-btn ">上一章</a>
|
||
<a href="../chapters.html" class="nav-btn">目录</a>
|
||
<a href="chapter-32.html" class="nav-btn ">下一章</a>
|
||
</div>
|
||
</nav>
|
||
|
||
<!-- 右侧滚动按钮 -->
|
||
<div class="scroll-buttons">
|
||
<button class="scroll-btn" id="scrollTop" title="回到顶部">顶</button>
|
||
<button class="scroll-btn" id="scrollBottom" title="回到底部">底</button>
|
||
</div>
|
||
|
||
<!-- 侧边栏章节导航 -->
|
||
<aside class="sidebar">
|
||
<div class="sidebar-title">章节导航</div>
|
||
<div class="sidebar-content" id="sidebarContent">
|
||
<a href="chapter-1.html" class="sidebar-chapter">第1章:洛兰的风</a>
|
||
<a href="chapter-2.html" class="sidebar-chapter">第2章:洛兰深处</a>
|
||
<a href="chapter-3.html" class="sidebar-chapter">第3章:幽暗密林</a>
|
||
<a href="chapter-4.html" class="sidebar-chapter">第4章:幽暗密林深处</a>
|
||
<a href="chapter-5.html" class="sidebar-chapter">第5章:雷鸣废墟</a>
|
||
<a href="chapter-6.html" class="sidebar-chapter">第6章:格拉卡</a>
|
||
<a href="chapter-7.html" class="sidebar-chapter">第7章:烈焰格拉卡</a>
|
||
<a href="chapter-8.html" class="sidebar-chapter">第8章:冰霜幽暗密林</a>
|
||
<a href="chapter-9.html" class="sidebar-chapter">第9章:转职之路</a>
|
||
<a href="chapter-10.html" class="sidebar-chapter">第10章:暗黑雷鸣废墟</a>
|
||
<a href="chapter-11.html" class="sidebar-chapter">第11章:剑魂转职仪式</a>
|
||
<a href="chapter-12.html" class="sidebar-chapter">第12章:西海岸</a>
|
||
<a href="chapter-13.html" class="sidebar-chapter">第13章:龙人之塔</a>
|
||
<a href="chapter-14.html" class="sidebar-chapter">第14章:人偶玄关</a>
|
||
<a href="chapter-15.html" class="sidebar-chapter">第15章:石巨人塔</a>
|
||
<a href="chapter-16.html" class="sidebar-chapter">第16章:黑暗玄廊</a>
|
||
<a href="chapter-17.html" class="sidebar-chapter">第17章:城主宫殿</a>
|
||
<a href="chapter-18.html" class="sidebar-chapter">第18章:番外·悬空城</a>
|
||
<a href="chapter-19.html" class="sidebar-chapter">第19章:天帷巨兽·神殿外围</a>
|
||
<a href="chapter-20.html" class="sidebar-chapter">第20章:树精丛林</a>
|
||
<a href="chapter-21.html" class="sidebar-chapter">第21章:炼狱</a>
|
||
<a href="chapter-22.html" class="sidebar-chapter">第22章:西海岸的闲暇</a>
|
||
<a href="chapter-23.html" class="sidebar-chapter">第23章:极昼</a>
|
||
<a href="chapter-24.html" class="sidebar-chapter">第24章:第一脊椎</a>
|
||
<a href="chapter-25.html" class="sidebar-chapter">第25章:赫顿玛尔的准备</a>
|
||
<a href="chapter-26.html" class="sidebar-chapter">第26章:第二脊椎</a>
|
||
<a href="chapter-27.html" class="sidebar-chapter">第27章:重逢的温柔</a>
|
||
<a href="chapter-28.html" class="sidebar-chapter">第28章:暗精灵的委托</a>
|
||
<a href="chapter-29.html" class="sidebar-chapter">第29章:阿法利亚营地</a>
|
||
<a href="chapter-30.html" class="sidebar-chapter">第30章:浅栖之地</a>
|
||
<a href="chapter-31.html" class="sidebar-chapter current">第31章:蜘蛛洞穴</a>
|
||
<a href="chapter-32.html" class="sidebar-chapter">第32章:克伦特的委托</a>
|
||
<a href="chapter-33.html" class="sidebar-chapter">第33章:暗精灵墓地·左翼守卫</a>
|
||
<a href="chapter-34.html" class="sidebar-chapter">第34章:暗精灵墓地·剩余三将军</a>
|
||
</div>
|
||
</aside>
|
||
|
||
<script>
|
||
// 记录阅读进度
|
||
let readChapters = JSON.parse(localStorage.getItem('readChapters') || '[]');
|
||
if (!readChapters.includes(31)) {
|
||
readChapters.push(31);
|
||
localStorage.setItem('readChapters', JSON.stringify(readChapters));
|
||
}
|
||
|
||
// 主题切换
|
||
const themeToggle = document.getElementById('themeToggle');
|
||
const savedTheme = localStorage.getItem('theme') || 'dark';
|
||
document.documentElement.setAttribute('data-theme', savedTheme);
|
||
themeToggle.textContent = savedTheme === 'dark' ? '浅色' : '深色';
|
||
|
||
themeToggle.addEventListener('click', () => {
|
||
const currentTheme = document.documentElement.getAttribute('data-theme');
|
||
const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
|
||
document.documentElement.setAttribute('data-theme', newTheme);
|
||
localStorage.setItem('theme', newTheme);
|
||
themeToggle.textContent = newTheme === 'dark' ? '浅色' : '深色';
|
||
});
|
||
|
||
// 滚动到顶部
|
||
document.getElementById('scrollTop').addEventListener('click', () => {
|
||
window.scrollTo({ top: 0, behavior: 'smooth' });
|
||
});
|
||
|
||
// 滚动到底部
|
||
document.getElementById('scrollBottom').addEventListener('click', () => {
|
||
window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' });
|
||
});
|
||
|
||
// 页面加载时,侧边栏自动滚动到当前章节
|
||
window.addEventListener('load', () => {
|
||
const sidebarContent = document.getElementById('sidebarContent');
|
||
const currentChapter = sidebarContent.querySelector('.current');
|
||
if (currentChapter) {
|
||
currentChapter.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
||
}
|
||
});
|
||
</script>
|
||
</body>
|
||
</html> |