jianzhihuixiang/alacarte-novel-website/chapters/chapter-34.html
小虾米 f8894dd3f3 fix: 修复上一章/下一章导航对小数章节(如107.5)的支持
- updateNavButtons: 改用数组索引查找,而非简单的+1/-1
- updateSidebarHighlight: 使用parseFloat比较章节ID
- updateMobileTOCHighlight: 使用parseFloat比较章节ID
- 更新版本号强制刷新缓存
2026-03-27 17:42:41 +08:00

659 lines
30 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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 34</div>
<h1 class="chapter-title">暗精灵墓地·剩余三将军</h1>
</header>
<article class="chapter-content">
<p>晨光透过营帐的缝隙洒落,林克缓缓睁开眼睛。赛丽亚正蜷缩在他怀中,呼吸均匀而恬静。奥菲利亚则在另一侧,脸颊上还带着昨夜的红晕。他小心翼翼地将手臂从两位少女身下抽出,不想惊醒她们。</p>
<p>「已经早上了吗?」赛丽亚揉着眼睛坐起身,精灵的敏锐让她在林克移动的瞬间便已醒来。</p>
<p>「嗯,该出发了。」林克轻声道,「今天要把剩下的三把钥匙全部拿到。」</p>
<p>奥菲利亚也醒了过来,听到这话,眼中闪过一丝担忧:「林克,三位骷髅将军 together...会不会太危险了?」</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>「没用的...这里的每一寸空间都充满了我的毒素...」骸德狞笑,「你们呼吸的每一口空气,都在削弱你们的生命...」</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>
</article>
</div>
<!-- 固定底部导航 -->
<nav class="fixed-nav">
<div class="fixed-nav-content">
<a href="chapter-33.html" class="nav-btn ">上一章</a>
<a href="../chapters.html" class="nav-btn">目录</a>
<a href="#" class="nav-btn disabled">下一章</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">第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 current">第34章暗精灵墓地·剩余三将军</a>
</div>
</aside>
<script>
// 记录阅读进度
let readChapters = JSON.parse(localStorage.getItem('readChapters') || '[]');
if (!readChapters.includes(34)) {
readChapters.push(34);
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>