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

610 lines
28 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 28</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>"一条死亡之龙。"莎兰解释,"数百年前,暗精灵们付出了巨大的代价才将它肢解封印。但现在,封印似乎出现了问题。"</p>
<p>她走到林克面前,距离近到林克能闻到她身上淡淡的紫罗兰香味。</p>
<p>"我推荐了你,林克。"莎兰轻声说,手指轻轻拂过他的肩膀,"毕竟,能够击败第八使徒的剑魂,可不多见。"</p>
<p>她的手指冰凉而柔软,触感让林克微微一怔。</p>
<p>赛丽亚站在一旁,看到这一幕,微微皱起了眉头。</p>
<p>"我们接受这个任务。"林克说,"什么时候出发?"</p>
<p>"明天。"莎兰退后一步,恢复了优雅的姿态,"今晚你们可以在公会休息。我会为你们准备好需要的东西。"</p>
<p>她转向赛丽亚,嘴角带着意味深长的笑容:"当然,如果你不放心你的……男朋友,也可以在这里陪着他。"</p>
<p>赛丽亚脸一红,握紧了林克的手:"我当然要陪着他。"</p>
<p>"呵呵,真是可爱。"莎兰轻笑,"那么,请跟我来吧。"</p>
<p>---</p>
<p>在前往魔法师公会之前,维加找到了林克。</p>
<p>"林克,我有话想对你说。"维加的表情有些复杂,"罗特斯已经被击败GBL教的诅咒也解除了。我……我想我该走了。"</p>
<p>"走?"林克一愣,"你要去哪里?"</p>
<p>"回天帷巨兽。"维加的目光望向远方,"奥菲利亚会跟着你们继续冒险但我……我需要留下来重建GBL教。那些还被精神污染影响的教友需要有人引导而且邪龙封印的事情也需要调查。"</p>
<p>他伸出手,握住了林克的手:"谢谢你,林克。如果没有你,我至今还被罗特斯控制,成为一具行尸走肉。"</p>
<p>林克回握住他的手:"是我应该谢谢你。没有你的帮助,我们不可能击败罗特斯。"</p>
<p>"照顾好奥菲利亚。"维加看了一眼不远处的奥菲利亚,轻声说,"她是个好女孩,只是经历了很多苦难。"</p>
<p>"我会的。"</p>
<p>维加点点头,然后转身离去。他的背影在阳光下显得有些孤独,但也带着一丝解脱。</p>
<p>林克目送着他离开,心中默默祝愿这位曾经的敌人、短暂的朋友一路平安。</p>
<p>---</p>
<p>莎兰为每个人安排了房间。</p>
<p>林克和赛丽亚的房间在塔的三层,窗户正对着大海。夕阳西下,海面被染成了一片金红色。</p>
<p>"莎兰会长……好像对你有意思。"赛丽亚坐在床边,小声说。</p>
<p>林克一愣:"有吗?"</p>
<p>"当然有了!"赛丽亚鼓起脸颊,"她看你的眼神,还有她碰你的样子……我都看到了。"</p>
<p>林克坐到她身边,搂住她的肩膀:"吃醋了?"</p>
<p>"才……才没有……"赛丽亚别过脸,但耳朵却红了。</p>
<p>林克笑着把她的脸转过来,在她唇上印下一个吻。</p>
<p>"不管别人怎么样,我只喜欢你。"他认真地说。</p>
<p>赛丽亚的眼神软了下来,她靠在林克怀里,轻轻点了点头。</p>
<p>"我也……只喜欢你。"</p>
<p>---</p>
<p>夜幕降临,魔法师公会陷入了宁静。</p>
<p>林克独自一人在走廊上散步,消化着晚餐。明天就要前往暗黑城了,他需要让自己的状态保持最佳。</p>
<p>当他经过公会顶层的露台时,看到了一个熟悉的身影。</p>
<p>是奥菲利亚。</p>
<p>她独自站在栏杆边,望着远方的海面,背影显得 lonely而单薄。</p>
<p>林克犹豫了一下,还是走了过去。</p>
<p>"奥菲利亚,怎么一个人在这里?"</p>
<p>奥菲利亚转过身,看到是林克,眼中闪过一丝惊讶,然后变成了复杂的神色。</p>
<p>"林克……"她轻声说,"我……我想一个人静一静。"</p>
<p>林克察觉到她的情绪有些不对:"发生什么事了吗?"</p>
<p>奥菲利亚沉默了许久,然后深深吸了一口气,像是下定了什么决心。</p>
<p>"林克,我……我有话想对你说。"</p>
<p>她转过身,直视着林克的眼睛。月光下,她的眼眶有些泛红。</p>
<p>"从你在神殿外围救下我的那一刻起,我就……我就喜欢上你了。"</p>
<p>林克愣住了。</p>
<p>"我知道这很唐突,我也知道你和赛丽亚小姐……"奥菲利亚的声音有些颤抖,"但是,我不想把这份感情藏在心里。我想让你知道,在这个世界上,有一个人一直默默地喜欢着你、崇拜着你。"</p>
<p>她向前走了两步,站在林克面前,仰头看着他。</p>
<p>"林克,我……我可以做你的女朋友吗?哪怕……只是之一?"</p>
<p>海风轻轻吹过,带来咸湿的气息。</p>
<p>林克看着眼前这个勇敢的少女,心中涌起一股复杂的情感。</p>
<p>他伸出手,轻轻擦去了她眼角的泪水。</p>
<p>"奥菲利亚……"他轻声说,"我很感谢你的心意。但是,赛丽亚她……"</p>
<p>"我知道!"奥菲利亚打断了他,"我知道赛丽亚小姐对你很重要!我也没有想要取代她的位置!我只是……只是想要陪在你身边,哪怕只是作为一个普通的队友也好……"</p>
<p>她的眼泪终于夺眶而出。</p>
<p>林克叹了口气,将她拥入怀中。</p>
<p>"别哭了。"他轻声说,"我不会赶你走的。你愿意留在队伍里,我很欢迎。"</p>
<p>奥菲利亚在他怀里抽泣着,双手紧紧抓住他的衣襟。</p>
<p>"真的吗?"</p>
<p>"真的。"林克点头,"但是,关于感情的事……我需要时间考虑,也需要和赛丽亚商量。"</p>
<p>奥菲利亚抬起头,泪眼朦胧地看着他,然后露出一个带着泪水的笑容。</p>
<p>"好……我等你。"</p>
<p>她踮起脚尖,在林克的脸上轻轻吻了一下,然后红着脸跑开了。</p>
<p>林克愣在原地,摸着被吻的脸颊,苦笑了一声。</p>
<p>"这下麻烦了……"</p>
<p>---</p>
<p>第二天一早,一行人准备出发前往暗黑城。</p>
<p>莎兰亲自送他们到门口,递给林克一个卷轴。</p>
<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-27.html" class="nav-btn ">上一章</a>
<a href="../chapters.html" class="nav-btn">目录</a>
<a href="chapter-29.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 current">第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">第34章暗精灵墓地·剩余三将军</a>
</div>
</aside>
<script>
// 记录阅读进度
let readChapters = JSON.parse(localStorage.getItem('readChapters') || '[]');
if (!readChapters.includes(28)) {
readChapters.push(28);
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>