jianzhihuixiang/alacarte-novel-website/reader.html

147 lines
6.5 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=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/style.css">
</head>
<body class="reader-page">
<!-- 阅读器头部 -->
<header class="reader-header" id="readerHeader">
<div class="reader-header-content">
<a href="index.html" class="reader-back">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M19 12H5M12 19l-7-7 7-7"/>
</svg>
</a>
<div class="reader-info">
<h1 class="reader-title" id="chapterTitle">第一章</h1>
<span class="reader-book">阿拉德:剑之回响</span>
</div>
<button class="reader-menu-toggle" id="readerMenuToggle">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<circle cx="12" cy="12" r="1"/>
<circle cx="19" cy="12" r="1"/>
<circle cx="5" cy="12" r="1"/>
</svg>
</button>
</div>
<div class="reader-progress-bar">
<div class="reader-progress-fill" id="readerProgress"></div>
</div>
</header>
<!-- 阅读器设置面板 -->
<div class="reader-settings" id="readerSettings">
<div class="settings-panel">
<div class="settings-section">
<h3>字体大小</h3>
<div class="font-size-control">
<button class="size-btn" data-size="small"></button>
<button class="size-btn active" data-size="normal"></button>
<button class="size-btn" data-size="large"></button>
</div>
</div>
<div class="settings-section">
<h3>主题</h3>
<div class="theme-options">
<button class="theme-option active" data-theme="dark">
<span class="theme-preview dark"></span>
<span>深色</span>
</button>
<button class="theme-option" data-theme="light">
<span class="theme-preview light"></span>
<span>浅色</span>
</button>
<button class="theme-option" data-theme="sepia">
<span class="theme-preview sepia"></span>
<span>护眼</span>
</button>
</div>
</div>
<div class="settings-section">
<h3>行间距</h3>
<div class="line-height-control">
<button class="lh-btn" data-lh="compact">紧凑</button>
<button class="lh-btn active" data-lh="normal">标准</button>
<button class="lh-btn" data-lh="loose">宽松</button>
</div>
</div>
</div>
</div>
<!-- 目录侧边栏 -->
<aside class="reader-sidebar" id="readerSidebar">
<div class="sidebar-header">
<h2>章节目录</h2>
<button class="sidebar-close" id="sidebarClose">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M18 6L6 18M6 6l12 12"/>
</svg>
</button>
</div>
<div class="sidebar-content" id="sidebarChapters">
<!-- 章节列表将通过JS动态生成 -->
</div>
</aside>
<!-- 阅读内容区域 -->
<main class="reader-content" id="readerContent">
<article class="chapter-content" id="chapterContent">
<!-- 章节内容将通过JS动态加载 -->
<div class="chapter-loading">
<div class="loading-spinner"></div>
<p>正在加载章节内容...</p>
</div>
</article>
</main>
<!-- 阅读器底部导航 -->
<footer class="reader-footer" id="readerFooter">
<div class="reader-nav">
<button class="nav-btn" id="prevChapter" disabled>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M15 18l-6-6 6-6"/>
</svg>
<span>上一章</span>
</button>
<button class="nav-btn nav-center" id="openSidebar">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M4 6h16M4 12h16M4 18h16"/>
</svg>
<span>目录</span>
</button>
<button class="nav-btn" id="nextChapter">
<span>下一章</span>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M9 18l6-6-6-6"/>
</svg>
</button>
</div>
</footer>
<!-- 阅读设置浮动按钮 -->
<button class="reader-settings-toggle" id="settingsToggle" title="阅读设置">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<circle cx="12" cy="12" r="3"/>
<path d="M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 010 2.83 2 2 0 01-2.83 0l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-2 2 2 2 0 01-2-2v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83 0 2 2 0 010-2.83l.06-.06a1.65 1.65 0 00.33-1.82 1.65 1.65 0 00-1.51-1H3a2 2 0 01-2-2 2 2 0 012-2h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 010-2.83 2 2 0 012.83 0l.06.06a1.65 1.65 0 001.82.33H9a1.65 1.65 0 001-1.51V3a2 2 0 012-2 2 2 0 012 2v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 0 2 2 0 010 2.83l-.06.06a1.65 1.65 0 00-.33 1.82V9a1.65 1.65 0 001.51 1H21a2 2 0 012 2 2 2 0 01-2 2h-.09a1.65 1.65 0 00-1.51 1z"/>
</svg>
</button>
<!-- 遮罩层 -->
<div class="overlay" id="overlay"></div>
<script src="js/app.js"></script>
<script>
// 阅读页面特定逻辑
document.addEventListener('DOMContentLoaded', function() {
initReader();
});
</script>
</body>
</html>