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

579 lines
25 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 27</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>房间里很安静,只有两人的呼吸声和窗外传来的海浪声。夕阳已经完全落下,房间被昏黄的灯光笼罩。</p>
<p>赛丽亚的脸依然红着,但她的眼神变得更加大胆了一些。</p>
<p>"林克……"她轻声唤他,"我……我想确认……你是真实存在的……"</p>
<p>她的手缓缓上移,抚上了林克的脸颊。</p>
<p>林克感到一股热流从心底涌起。他看着眼前这个为他担心、为他流泪的少女,心中充满了想要保护她、拥有她的冲动。</p>
<p>"赛丽亚……"他低声说,"可以吗?"</p>
<p>赛丽亚没有回答,只是缓缓点了点头,然后闭上了眼睛。</p>
<p>那是一个默许的姿态。</p>
<p>---</p>
<p>林克轻轻将她拥入怀中,低下头吻住了她的唇。</p>
<p>这一次,吻不再是试探性的轻触,而是更加深入、更加热烈的交融。</p>
<p>赛丽亚生涩地回应着他,双手攀上了他的肩膀。她的身体在微微颤抖,既是因为紧张,也是因为期待。</p>
<p>林克的手缓缓下移,抚上了她的腰肢。隔着薄薄的衣裙,他能感受到她肌肤的温热和柔软。</p>
<p>"嗯……"赛丽亚发出一声轻哼,身体更加贴近了他。</p>
<p>这个声音像是点燃了一把火。林克的理智在这一刻彻底崩溃。</p>
<p>他将赛丽亚压倒在床上,手指解开了她衣裙的系带。淡绿色的衣裙滑落,露出她白皙的肌肤和纤细的肩膀。</p>
<p>赛丽亚害羞地想要遮掩,但林克握住了她的手。</p>
<p>"你很美。"他低声说,声音沙哑。</p>
<p>赛丽亚的脸红得快要滴血,但她没有拒绝。</p>
<p>林克俯下身,吻落在她的额头、眼睛、鼻尖,最后停在她的唇上。他的手在她身上游走,带来一阵阵颤栗。</p>
<p>"林克……"赛丽亚喘息着,"我……我第一次……"</p>
<p>"我知道。"林克温柔地说,"我会轻一点的。"</p>
<p>他褪去了两人的衣物,肌肤相贴的温度让两人都倒吸一口冷气。</p>
<p>赛丽亚的身体如同最上等的丝绸,光滑而柔软。林克小心翼翼地进入,赛丽亚咬住了嘴唇,手指紧紧抓住床单。</p>
<p>疼痛让她皱起了眉头,但林克的温柔抚触很快让她放松下来。</p>
<p>随着节奏的建立,疼痛逐渐被另一种感觉取代。那是一种奇妙的、让人迷醉的愉悦。</p>
<p>赛丽亚开始主动回应,她的双腿环住了林克的腰,双手紧紧抱着他的背。</p>
<p>房间里只剩下喘息声和肌肤碰撞的声音,以及窗外轻柔的海浪声。</p>
<p>在这个温馨的夜晚,两个年轻的灵魂终于完全融合在了一起。</p>
<p>---</p>
<p>事后,两人相拥而眠。</p>
<p>赛丽亚蜷缩在林克的怀里,脸上带着满足的红晕。她的手指在林克的胸口画着圈,听着他平稳的心跳。</p>
<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-26.html" class="nav-btn ">上一章</a>
<a href="../chapters.html" class="nav-btn">目录</a>
<a href="chapter-28.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 current">第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">第34章暗精灵墓地·剩余三将军</a>
</div>
</aside>
<script>
// 记录阅读进度
let readChapters = JSON.parse(localStorage.getItem('readChapters') || '[]');
if (!readChapters.includes(27)) {
readChapters.push(27);
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>