refactor totoga2四頁移入資料夾

This commit is contained in:
2026-05-17 20:12:29 +08:00
parent 5d23774b50
commit d0897a4656
14 changed files with 980 additions and 671 deletions
+8 -8
View File
@@ -3,10 +3,10 @@
* ── 導覽「尚未開放」連結 ───────────────────────────────────────── * ── 導覽「尚未開放」連結 ─────────────────────────────────────────
* 【兩個世界】① 僅 `extra/site-guide.html``<nav data-portal-nav-all-open>` 頂欄全可點;`main.site-guide-main` 內 `<a>` 不改寫。 * 【兩個世界】① 僅 `extra/site-guide.html``<nav data-portal-nav-all-open>` 頂欄全可點;`main.site-guide-main` 內 `<a>` 不改寫。
* ② 其餘每一頁:頂欄+**頁內所有連結**(含 totoga2 分頁列、首頁內文)皆依 COMING_SOONINDEX 白名單鎖定。 * ② 其餘每一頁:頂欄+**頁內所有連結**(含 totoga2 分頁列、首頁內文)皆依 COMING_SOONINDEX 白名單鎖定。
* 【totoga2】頂欄四入口:時間軸(`totoga2-copy-timeline.html`)、圖文好讀版(`totoga2.html`)在 Set;電子書/影片可點。未同意不得從 Set 刪除或擅自開放。 * 【totoga2】頂欄四入口:時間軸(`timeline.html`)、圖文好讀版(`readable.html`)在 Set;電子書/影片可點。未同意不得從 Set 刪除或擅自開放。
* 【硬規則】檔案在 repo ≠ 可開放;未同意不得從 Set 刪名、不得擴白名單、不得在模板新增可點項。 * 【硬規則】檔案在 repo ≠ 可開放;未同意不得從 Set 刪名、不得擴白名單、不得在模板新增可點項。
* 【未公開】href 改 #、不可點。頂欄與頁內按鈕:NAV_SOON_PHRASES 滑過隨機氣泡(同 ::after);無障礙 aria「尚無開放」;不加可見「(籌備中)」文字後綴。 * 【未公開】href 改 #、不可點。頂欄與頁內按鈕:NAV_SOON_PHRASES 滑過隨機氣泡(同 ::after);無障礙 aria「尚無開放」;不加可見「(籌備中)」文字後綴。
* 【totoga2 開放】`extra/totoga2-copy-ebook.html`、`extra/totoga2-video.html` 可點;`totoga2-copy-timeline.html` 與 `fallen/totoga2.html` 在 Set 內。 * 【totoga2 開放】`totoga2/ebook.html`、`totoga2/video.html` 可點;`timeline.html` 與 `totoga2/readable.html` 在 Set 內。
* 頂欄勿加 `portal-nav__sub`(站主未要求);曾用副標見 `.cursor/portal-nav-optimization-backlog.md`。 * 頂欄勿加 `portal-nav__sub`(站主未要求);曾用副標見 `.cursor/portal-nav-optimization-backlog.md`。
* 完整條文:`.cursor/rules/portal-nav-rules.mdc` + `user-scope-and-nav.mdc` * 完整條文:`.cursor/rules/portal-nav-rules.mdc` + `user-scope-and-nav.mdc`
*/ */
@@ -65,8 +65,8 @@
"member.html", "member.html",
"minister.html", "minister.html",
"minister_ge.html", "minister_ge.html",
"totoga2.html", "readable.html",
"totoga2-copy-timeline.html", "timeline.html",
"variety.html", "variety.html",
]); ]);
@@ -251,10 +251,10 @@
<li class="portal-nav__subgroup"> <li class="portal-nav__subgroup">
<span class="portal-nav__subgroup-head"><span class="portal-nav__label">傳奇的轉折</span></span> <span class="portal-nav__subgroup-head"><span class="portal-nav__label">傳奇的轉折</span></span>
<ul class="portal-submenu-nested" aria-label="傳奇的轉折"> <ul class="portal-submenu-nested" aria-label="傳奇的轉折">
<li><a target="_blank" rel="noopener noreferrer" href="${rp}extra/totoga2-copy-timeline.html"><span class="portal-nav__label">時間軸</span></a></li> <li><a target="_blank" rel="noopener noreferrer" href="${rp}totoga2/timeline.html"><span class="portal-nav__label">時間軸</span></a></li>
<li><a target="_blank" rel="noopener noreferrer" href="${rp}extra/totoga2-copy-ebook.html"><span class="portal-nav__label">電子書</span></a></li> <li><a target="_blank" rel="noopener noreferrer" href="${rp}totoga2/ebook.html"><span class="portal-nav__label">電子書</span></a></li>
<li><a target="_blank" rel="noopener noreferrer" href="${rp}fallen/totoga2.html"><span class="portal-nav__label">圖文好讀版</span></a></li> <li><a target="_blank" rel="noopener noreferrer" href="${rp}totoga2/readable.html"><span class="portal-nav__label">圖文好讀版</span></a></li>
<li><a target="_blank" rel="noopener noreferrer" href="${rp}extra/totoga2-video.html"><span class="portal-nav__label">影片</span></a></li> <li><a target="_blank" rel="noopener noreferrer" href="${rp}totoga2/video.html"><span class="portal-nav__label">影片</span></a></li>
</ul> </ul>
</li> </li>
<li class="portal-nav__subgroup"> <li class="portal-nav__subgroup">
+29 -29
View File
@@ -118,32 +118,32 @@
</tr> </tr>
<tr data-site-guide-depth="3"> <tr data-site-guide-depth="3">
<td class="site-guide-nav-menu-cell"><span class="site-guide-nav-name"><a <td class="site-guide-nav-menu-cell"><span class="site-guide-nav-name"><a
href="totoga2-copy-timeline.html">時間軸</a></span></td> href="../totoga2/timeline.html">時間軸</a></span></td>
<td class="site-guide-nav-desc">時間軸與紀實八章長文單頁。</td> <td class="site-guide-nav-desc">時間軸與紀實八章長文單頁。</td>
<td class="site-guide-nav-link-cell"><a <td class="site-guide-nav-link-cell"><a
href="totoga2-copy-timeline.html"><code>extra/totoga2-copy-timeline.html</code></a> href="../totoga2/timeline.html"><code>totoga2/timeline.html</code></a>
</td> </td>
</tr> </tr>
<tr data-site-guide-depth="3"> <tr data-site-guide-depth="3">
<td class="site-guide-nav-menu-cell"><span class="site-guide-nav-name"><a <td class="site-guide-nav-menu-cell"><span class="site-guide-nav-name"><a
href="totoga2-copy-ebook.html">電子書</a></span></td> href="../totoga2/ebook.html">電子書</a></span></td>
<td class="site-guide-nav-desc">紀實電子書內容獨立成頁。</td> <td class="site-guide-nav-desc">紀實電子書內容獨立成頁。</td>
<td class="site-guide-nav-link-cell"><a <td class="site-guide-nav-link-cell"><a
href="totoga2-copy-ebook.html"><code>extra/totoga2-copy-ebook.html</code></a></td> href="../totoga2/ebook.html"><code>totoga2/ebook.html</code></a></td>
</tr> </tr>
<tr data-site-guide-depth="3"> <tr data-site-guide-depth="3">
<td class="site-guide-nav-menu-cell"><span class="site-guide-nav-name"><a <td class="site-guide-nav-menu-cell"><span class="site-guide-nav-name"><a
href="../fallen/totoga2.html">圖文好讀版</a></span></td> href="../totoga2/readable.html">圖文好讀版</a></span></td>
<td class="site-guide-nav-desc">單頁整合:影片/電子書/長文模式切換與八章錨點。</td> <td class="site-guide-nav-desc">單頁整合:影片/電子書/長文模式切換與八章錨點。</td>
<td class="site-guide-nav-link-cell"><a <td class="site-guide-nav-link-cell"><a
href="../fallen/totoga2.html"><code>fallen/totoga2.html</code></a></td> href="../totoga2/readable.html"><code>totoga2/readable.html</code></a></td>
</tr> </tr>
<tr data-site-guide-depth="3"> <tr data-site-guide-depth="3">
<td class="site-guide-nav-menu-cell"><span class="site-guide-nav-name"><a <td class="site-guide-nav-menu-cell"><span class="site-guide-nav-name"><a
href="totoga2-video.html">影片</a></span></td> href="../totoga2/video.html">影片</a></span></td>
<td class="site-guide-nav-desc">無限挑戰 · 六六歌2 嵌入影片單頁。</td> <td class="site-guide-nav-desc">無限挑戰 · 六六歌2 嵌入影片單頁。</td>
<td class="site-guide-nav-link-cell"><a <td class="site-guide-nav-link-cell"><a
href="totoga2-video.html"><code>extra/totoga2-video.html</code></a></td> href="../totoga2/video.html"><code>totoga2/video.html</code></a></td>
</tr> </tr>
<tr data-site-guide-depth="2"> <tr data-site-guide-depth="2">
<td class="site-guide-nav-menu-cell"><span class="site-guide-nav-name"><span <td class="site-guide-nav-menu-cell"><span class="site-guide-nav-name"><span
@@ -293,44 +293,44 @@
<td>區塊錨點(<code>#story</code> 不在頂欄白名單)</td> <td>區塊錨點(<code>#story</code> 不在頂欄白名單)</td>
</tr> </tr>
<tr> <tr>
<td><a href="totoga2-copy-timeline.html">時間軸</a></td> <td><a href="../totoga2/timeline.html">時間軸</a></td>
<td>平行單頁 · <code>totoga2-copy-timeline.html</code></td> <td>平行單頁 · <code>totoga2/timeline.html</code></td>
</tr> </tr>
<tr> <tr>
<td><a href="totoga2-copy-ebook.html">電子書</a></td> <td><a href="../totoga2/ebook.html">電子書</a></td>
<td>平行單頁 · <code>totoga2-copy-ebook.html</code></td> <td>平行單頁 · <code>totoga2/ebook.html</code></td>
</tr> </tr>
<tr> <tr>
<td><a href="../fallen/totoga2.html">圖文好讀版</a></td> <td><a href="../totoga2/readable.html">圖文好讀版</a></td>
<td>整合長頁 · <code>fallen/totoga2.html</code></td> <td>整合長頁 · <code>totoga2/readable.html</code></td>
</tr> </tr>
<tr> <tr>
<td><a href="totoga2-video.html">影片</a></td> <td><a href="../totoga2/video.html">影片</a></td>
<td>平行單頁 · <code>totoga2-video.html</code></td> <td>平行單頁 · <code>totoga2/video.html</code></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<div class="site-guide-grid site-guide-grid--compact"> <div class="site-guide-grid site-guide-grid--compact">
<article class="site-guide-card site-guide-card--totoga2"> <article class="site-guide-card site-guide-card--totoga2">
<h3><a href="../fallen/totoga2.html">六六歌2 · 四入口</a></h3> <h3><a href="../totoga2/readable.html">六六歌2 · 四入口</a></h3>
<p class="site-guide-note">複本總覽:<a href="totoga2%20copy.html">totoga2 copy.html</a>。章節錨點僅在圖文好讀版內。 <p class="site-guide-note">複本總覽:<a href="totoga2%20copy.html">totoga2 copy.html</a>。章節錨點僅在圖文好讀版內。
</p> </p>
<ul class="site-guide-inline-links"> <ul class="site-guide-inline-links">
<li><a href="totoga2-copy-timeline.html">時間軸</a></li> <li><a href="../totoga2/timeline.html">時間軸</a></li>
<li><a href="totoga2-copy-ebook.html">電子書</a></li> <li><a href="../totoga2/ebook.html">電子書</a></li>
<li><a href="../fallen/totoga2.html">圖文好讀版</a></li> <li><a href="../totoga2/readable.html">圖文好讀版</a></li>
<li><a href="totoga2-video.html">影片</a></li> <li><a href="../totoga2/video.html">影片</a></li>
</ul> </ul>
<nav class="site-guide-chapter-nav" aria-label="totoga2 章節"> <nav class="site-guide-chapter-nav" aria-label="totoga2 章節">
<a href="../fallen/totoga2.html#challenge">無限挑戰</a> <a href="readable.html#challenge">無限挑戰</a>
<a href="../fallen/totoga2.html#ssg2">六六歌2</a> <a href="readable.html#ssg2">六六歌2</a>
<a href="../fallen/totoga2.html#sechskies-profile">水晶男孩</a> <a href="readable.html#sechskies-profile">水晶男孩</a>
<a href="../fallen/totoga2.html#gather">召集</a> <a href="readable.html#gather">召集</a>
<a href="../fallen/totoga2.html#negotiate">交涉</a> <a href="readable.html#negotiate">交涉</a>
<a href="../fallen/totoga2.html#variables">變數</a> <a href="readable.html#variables">變數</a>
<a href="../fallen/totoga2.html#surprise">驚喜</a> <a href="readable.html#surprise">驚喜</a>
<a href="../fallen/totoga2.html#final-stage">登場</a> <a href="readable.html#final-stage">登場</a>
</nav> </nav>
</article> </article>
</div> </div>
+8 -8
View File
@@ -8,7 +8,7 @@
<link rel="stylesheet" href="../assets/css/style.css"> <link rel="stylesheet" href="../assets/css/style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<link rel="stylesheet" href="../assets/css/tablet.css"> <link rel="stylesheet" href="../assets/css/tablet.css">
<link rel="stylesheet" href="totoga2-split-nav.css"> <link rel="stylesheet" href="../totoga2/split-nav.css">
</head> </head>
<body class="ebook-ssg2-page totoga2-page"> <body class="ebook-ssg2-page totoga2-page">
@@ -30,25 +30,25 @@
<h2 class="section-title" id="totoga2-copy-hub-title">六六歌2 複本 · 三頁分開</h2> <h2 class="section-title" id="totoga2-copy-hub-title">六六歌2 複本 · 三頁分開</h2>
<p class="ebook-intro-lead"> <p class="ebook-intro-lead">
原先單頁以按鈕切換「影片/電子書/時間軸+長文」;此複本改為<strong>三個獨立 HTML</strong>(檔名無空白,較利分享與書籤)。 原先單頁以按鈕切換「影片/電子書/時間軸+長文」;此複本改為<strong>三個獨立 HTML</strong>(檔名無空白,較利分享與書籤)。
正式整合版仍以 <a href="../fallen/totoga2.html">fallen/totoga2.html</a> 為準。 正式整合版仍以 <a href="../totoga2/readable.html">totoga2/readable.html</a> 為準。
</p> </p>
</section> </section>
<nav class="ebook-back-link totoga2-split-crossnav totoga2-copy-hub-nav" aria-label="六六歌2 閱讀入口"> <nav class="ebook-back-link totoga2-split-crossnav totoga2-copy-hub-nav" aria-label="六六歌2 閱讀入口">
<a href="totoga2-copy-timeline.html" class="btn" title="時間軸與紀實八章長文單頁">時間軸</a> <a href="../totoga2/timeline.html" class="btn" title="時間軸與紀實八章長文單頁">時間軸</a>
<a href="totoga2-copy-ebook.html" class="btn" title="紀實電子書內容獨立成頁">電子書</a> <a href="../totoga2/ebook.html" class="btn" title="紀實電子書內容獨立成頁">電子書</a>
<a href="../fallen/totoga2.html" class="btn" title="單頁整合:影片/電子書/長文模式切換與八章錨點">圖文好讀版</a> <a href="../totoga2/readable.html" class="btn" title="單頁整合:影片/電子書/長文模式切換與八章錨點">圖文好讀版</a>
<a href="totoga2-video.html" class="btn" title="無限挑戰 · 六六歌2 嵌入影片單頁">影片</a> <a href="../totoga2/video.html" class="btn" title="無限挑戰 · 六六歌2 嵌入影片單頁">影片</a>
</nav> </nav>
<p class="ebook-intro-lead totoga2-copy-hub-anchor-hint"> <p class="ebook-intro-lead totoga2-copy-hub-anchor-hint">
長文章節錨點請用 <a href="totoga2-copy-timeline.html#challenge">#challenge</a> 等同名 id(見時間軸頁)。 長文章節錨點請用 <a href="../totoga2/timeline.html#challenge">#challenge</a> 等同名 id(見時間軸頁)。
</p> </p>
</main> </main>
<p class="ebook-back-link content-container"> <p class="ebook-back-link content-container">
<a href="../index.html#story" class="btn">回到首頁 · 傳奇的轉折</a> <a href="../index.html#story" class="btn">回到首頁 · 傳奇的轉折</a>
<a href="../fallen/totoga2.html" class="btn">主檔 fallen/totoga2.html</a> <a href="../totoga2/readable.html" class="btn">主檔 totoga2/readable.html</a>
</p> </p>
<footer> <footer>
+6 -164
View File
@@ -1,169 +1,11 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh-TW"> <html lang="zh-TW">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="refresh" content="0; url=../totoga2/ebook.html">
<title>水晶男孩|六六歌2 — 紀實電子書</title> <link rel="canonical" href="../totoga2/ebook.html">
<link rel="stylesheet" href="../assets/css/style.css"> <title>已搬移</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"> <script>location.replace("../totoga2/ebook.html" + location.hash);</script>
<link rel="stylesheet" href="../assets/css/tablet.css">
<link rel="stylesheet" href="totoga2-split-nav.css">
</head> </head>
<body><p>頁面已搬至 <a href="../totoga2/ebook.html">totoga2/ebook.html</a></p></body>
<body class="ebook-ssg2-page totoga2-page totoga2-ebook-copy-page">
<header class="map-archive-header">
<div class="header-inner site-header-inner">
<h1 class="main-title">無限挑戰 · 六六歌2</h1>
<div class="subtitle-wrap">
<span class="sub-title">水晶男孩回來啦!</span>
</div>
</div>
</header>
<nav class="portal-nav" aria-label="水晶男孩推廣部導覽" data-portal-nav></nav>
<canvas id="particles"></canvas>
<nav class="ebook-back-link content-container totoga2-split-crossnav" aria-label="六六歌2 閱讀入口">
<a href="totoga2-copy-timeline.html" class="btn" title="時間軸與紀實八章長文單頁">時間軸</a>
<a href="totoga2-copy-ebook.html" class="btn" aria-current="page" title="紀實電子書內容獨立成頁">電子書</a>
<a href="../fallen/totoga2.html" class="btn" title="單頁整合:影片/電子書/長文模式切換與八章錨點">圖文好讀版</a>
<a href="totoga2-video.html" class="btn" title="無限挑戰 · 六六歌2 嵌入影片單頁">影片</a>
</nav>
<div class="content-container ebook-main">
<section class="ebook-intro section" aria-label="電子書說明">
<h2 class="section-title">紀實電子書</h2>
<p class="ebook-intro-lead">
四月那場重逢,不只是一集綜藝,而是塵封十六年的旋律,終於在笑聲與淚水裡再次被聽見。這本紀實電子書留住《無限挑戰》六六歌2
的每一頁:有驚喜、有拉扯,也有那些當時說不出口的想念。慢慢翻過去吧——我們後來才明白,有些情誼早已超越了表演,只是在節目的鏡頭裡,換了一種方式,陪彼此一起變老。
</p>
<div class="ebook-intro-notes fa-before-lead fa-before-lead--balloon">
<p class="ebook-intro-note">看看後面飄落的氣球,等等十秒,電子書就會出現囉。</p>
<p class="ebook-intro-note">翻頁方式:點擊書頁左、右側,或拖曳頁角即可往前/往後翻。</p>
</div>
</section>
<!-- <div class="flip-ebook-shell">
<div class="flip-ebook-aspect">
<iframe src="https://online.fliphtml5.com/tjyxm/vqff/" title="2023_電子書_無限挑戰六六歌2_final跨頁"
allowfullscreen></iframe>
</div>
</div> -->
<div class="flip-ebook-shell">
<div id="book-container" class="flip-ebook-aspect flip-ebook-aspect--pageflip">
<!-- PDF.js + PageFlip 會在此產生頁面 -->
<div id="my-flipbook"></div>
</div>
</div>
</div>
<p class="ebook-back-link content-container">
<a href="../index.html#story" class="btn">回到首頁 · 傳奇的轉折</a>
</p>
<footer>
<p>SECHSKIES Fanpage &copy; 2026 - 黃色氣球永遠飄揚</p>
<a href="https://jekkinoopy.github.io/Portfolio/" class="studio-link" target="_blank">
Design by <span class="mark_b">Jekkinoopy Studio</span>
</a>
</footer>
<script src="../assets/js/particles.js"></script>
<script src="../assets/js/portal-nav.js"></script>
<!-- 1. 引入 PDF.js 核心庫 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.min.js"></script>
<!-- 2. 引入 PageFlip -->
<script src="https://cdn.jsdelivr.net/npm/page-flip/dist/js/page-flip.browser.js"></script>
<script>
pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.worker.min.js';
/** 專案內實際存在的 PDF(原 totoga2/ebook/totoga2_ebook.pdf 尚未建檔) */
var EBOOK_PDF_URL = '../assets/images/totoga2/totoga2.pdf';
function showEbookError(message) {
var box = document.getElementById('my-flipbook');
if (!box) return;
box.innerHTML = '<p class="ebook-pdf-error" role="alert">' + message + '</p>';
}
async function initEbook(pdfUrl) {
var container = document.getElementById('my-flipbook');
if (!container) throw new Error('找不到 #my-flipbook');
if (typeof pdfjsLib === 'undefined') throw new Error('PDF.js 未載入');
if (typeof St === 'undefined' || !St.PageFlip) throw new Error('PageFlipSt.PageFlip)未載入');
var loadingTask = pdfjsLib.getDocument(pdfUrl);
var pdf = await loadingTask.promise;
/* 第 1 頁為封面;內文比例以第 2 頁為準(與 PageFlip showCover 一致) */
var sizePageIndex = pdf.numPages >= 2 ? 2 : 1;
var sizePage = await pdf.getPage(sizePageIndex);
var natural = sizePage.getViewport({ scale: 1 });
var shell = document.querySelector('.flip-ebook-shell');
var bookHost = document.getElementById('book-container');
if (bookHost) {
bookHost.style.width = '100%';
bookHost.style.maxWidth = '100%';
bookHost.style.marginLeft = '0';
bookHost.style.marginRight = '0';
}
container.style.width = '100%';
container.style.maxWidth = '100%';
var measureEl = bookHost || shell;
var pageW = Math.max(320, Math.floor((measureEl && measureEl.clientWidth) || 0));
var pageH = Math.floor(pageW * (natural.height / natural.width));
var renderScale = (pageW / natural.width) * Math.min(window.devicePixelRatio || 1, 2);
for (var i = 1; i <= pdf.numPages; i++) {
var page = await pdf.getPage(i);
var viewport = page.getViewport({ scale: renderScale });
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
await page.render({ canvasContext: context, viewport: viewport }).promise;
var pageElement = document.createElement('div');
pageElement.className = 'page';
if (i === 1) {
pageElement.setAttribute('data-density', 'hard');
} else if (i === pdf.numPages) {
pageElement.setAttribute('data-density', 'hard');
}
pageElement.appendChild(canvas);
container.appendChild(pageElement);
}
var pageFlip = new St.PageFlip(container, {
width: pageW,
height: pageH,
/* stretch 在寬容器會固定走 landscape(總寬=2×半頁),跨頁 PDF 會被切成左空白+右半頁 */
size: 'fixed',
usePortrait: true,
showCover: true,
startPage: 0,
autoSize: true,
drawShadow: true,
maxShadowOpacity: 0.4
});
pageFlip.loadFromHTML(document.querySelectorAll('#my-flipbook .page'));
}
initEbook(EBOOK_PDF_URL).catch(function (err) {
console.error(err);
showEbookError(
'電子書 PDF 無法載入或翻頁初始化失敗。若用本機直接開檔案(file://),請改由本機伺服器開啟;並確認路徑存在:<code>'
+ EBOOK_PDF_URL + '</code>'
);
});
</script>
</body>
</html> </html>
+6 -80
View File
@@ -1,85 +1,11 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh-TW"> <html lang="zh-TW">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="refresh" content="0; url=../totoga2/timeline.html">
<title>水晶男孩|六六歌2 — 時間軸與紀實長文</title> <link rel="canonical" href="../totoga2/timeline.html">
<link rel="stylesheet" href="../assets/css/style.css"> <title>已搬移</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"> <script>location.replace("../totoga2/timeline.html" + location.hash);</script>
<link rel="stylesheet" href="../assets/css/tablet.css">
<link rel="stylesheet" href="totoga2-split-nav.css">
</head> </head>
<body><p>頁面已搬至 <a href="../totoga2/timeline.html">totoga2/timeline.html</a></p></body>
<body class="ebook-ssg2-page totoga2-page">
<header class="map-archive-header">
<div class="header-inner site-header-inner">
<h1 class="main-title">無限挑戰 · 六六歌2</h1>
<div class="subtitle-wrap">
<span class="sub-title">水晶男孩回來啦!</span>
</div>
</div>
</header>
<nav class="portal-nav" aria-label="水晶男孩推廣部導覽" data-portal-nav></nav>
<canvas id="particles"></canvas>
<nav class="ebook-back-link content-container totoga2-split-crossnav" aria-label="六六歌2 閱讀入口">
<a href="totoga2-copy-timeline.html" class="btn" aria-current="page" title="時間軸與紀實八章長文單頁">時間軸</a>
<a href="totoga2-copy-ebook.html" class="btn" title="紀實電子書內容獨立成頁">電子書</a>
<a href="../fallen/totoga2.html" class="btn" title="單頁整合:影片/電子書/長文模式切換與八章錨點">圖文好讀版</a>
<a href="totoga2-video.html" class="btn" title="無限挑戰 · 六六歌2 嵌入影片單頁">影片</a>
</nav>
<div class="totoga2-reader-hub content-container ebook-main">
<section class="story-archive totoga2-plot content-container" aria-labelledby="totoga2-plot-title">
<h2 class="section-title" id="totoga2-plot-title">傳奇的轉折</h2>
<div class="subtitle-wrap">
<span class="sub-title">PLOT TWIST</span>
</div>
<p class="intro-text">
與首頁相同的節點提要;點下方連結可跳到本頁「紀實長文」對應章節(八章皆在本頁,無需另開檔案)。
</p>
<div class="merged-storyline">
<article id="totoga2-special" class="story-node" data-era="六六歌">
<h3>六六歌實錄</h3>
<p>把懸念、試探與哭點縫在同一條時間軸上;很多人第一次真正把「水晶男孩」打進搜尋框,就是從這種瘋狂的剪輯節奏開始。</p>
<p><a href="#ssg2">對照本頁幕後敘事 · 六六歌第二季</a></p>
</article>
<article id="totoga2-negotiate-card" class="story-node" data-era="交涉">
<h3>命運的交涉</h3>
<p>KTV、游擊演唱會規則、與其說講道理不如說把真心擺上桌面——交涉的不是合約字面,而是還願不願意再一次肩並肩。</p>
<p><a href="#negotiate">讀本頁 · 正式交涉</a></p>
</article>
<article id="totoga2-complete" class="story-node" data-era="歸位">
<h3>拼圖的歸位</h3>
<p>變數一個個被排除之後,驚喜接上登場段落;缺一角舞台的視覺,終於對齊觀眾席上堅守的那片黃。</p>
<p><a href="#gather">從本頁「召集」段開始補這條線</a></p>
</article>
<article id="totoga2-past" class="story-node" data-era="最初">
<h3>巔峰與雨天</h3>
<p>急凍、告別、各自的跑道——並不是要你沉浸遺憾,而是讓你懂:後來每一次亮燈,為什麼會更值得尖叫。</p>
<p><a href="#sechskies-profile">讀本頁脈絡起點 · 水晶男孩</a></p>
</article>
</div>
</section>
<p class="ebook-back-link content-container">
<a href="../index.html#story" class="btn">回到首頁 · 傳奇的轉折</a>
</p>
<footer>
<p>SECHSKIES Fanpage &copy; 2026 - 黃色氣球永遠飄揚</p>
<a href="https://jekkinoopy.github.io/Portfolio/" class="studio-link" target="_blank">
Design by <span class="mark_b">Jekkinoopy Studio</span>
</a>
</footer>
<script src="../assets/js/particles.js"></script>
<script src="../assets/js/portal-nav.js"></script>
<script src="../assets/js/totoga2.js"></script>
</body>
</html> </html>
+6 -116
View File
@@ -1,121 +1,11 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh-TW"> <html lang="zh-TW">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="refresh" content="0; url=../totoga2/video.html">
<title>水晶男孩|六六歌2 — 節目影片</title> <link rel="canonical" href="../totoga2/video.html">
<link rel="stylesheet" href="../assets/css/style.css"> <title>已搬移</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"> <script>location.replace("../totoga2/video.html" + location.hash);</script>
<link rel="stylesheet" href="../assets/css/tablet.css">
<link rel="stylesheet" href="totoga2-split-nav.css">
</head> </head>
<body><p>頁面已搬至 <a href="../totoga2/video.html">totoga2/video.html</a></p></body>
<body class="ebook-ssg2-page totoga2-page totoga2-video-copy-page">
<nav class="portal-nav" aria-label="水晶男孩推廣部導覽" data-portal-nav></nav>
<canvas id="particles"></canvas>
<nav class="ebook-back-link content-container totoga2-split-crossnav" aria-label="六六歌2 閱讀入口">
<a href="totoga2-copy-timeline.html" class="btn" title="時間軸與紀實八章長文單頁">時間軸</a>
<a href="totoga2-copy-ebook.html" class="btn" title="紀實電子書內容獨立成頁">電子書</a>
<a href="../fallen/totoga2.html" class="btn" title="單頁整合:影片/電子書/長文模式切換與八章錨點">圖文好讀版</a>
<a href="totoga2-video.html" class="btn" aria-current="page" title="無限挑戰 · 六六歌2 嵌入影片單頁">影片</a>
</nav>
<div class="content-container ebook-main">
<section class="ebook-intro section" aria-labelledby="ebook-bilivideo-heading">
<h2 class="section-title" id="ebook-bilivideo-heading">節目影片</h2>
<div id="bilivideo-tabs" class="bilivideo-tabs__shell">
<!-- tablist 在 DOM 上須先於 iframe,否則 B 站播放器合成層易蓋住下方按鈕文字;畫面順序改由 CSS flex order 控制 -->
<nav class="bilivideo-episode-nav" role="tablist" aria-label="節目影片集數">
<button type="button" class="btn bilivideo-episode-nav__tab bilivideo-episode-nav__tab--active"
role="tab" id="bilivideo-tab-1" aria-controls="bilivideo-panel-1"
aria-selected="true">上集</button>
<button type="button" class="btn bilivideo-episode-nav__tab" role="tab" id="bilivideo-tab-2"
aria-controls="bilivideo-panel-2" aria-selected="false" tabindex="-1">中集</button>
<button type="button" class="btn bilivideo-episode-nav__tab" role="tab" id="bilivideo-tab-3"
aria-controls="bilivideo-panel-3" aria-selected="false" tabindex="-1">下集</button>
</nav>
<div class="bilivideo-tabs__panels">
<div class="bilivideo-tabs__panel" role="tabpanel" id="bilivideo-panel-1"
aria-labelledby="bilivideo-tab-1">
<div class="bilivideo-frame">
<iframe title="無限挑戰 六六歌2 上集"
src="//player.bilibili.com/player.html?isOutside=true&aid=12288323&bvid=BV1Yx411B7TC&cid=20353565&p=1"
scrolling="no" border="0" frameborder="no" framespacing="0"
allowfullscreen="true"></iframe>
</div>
</div>
<div class="bilivideo-tabs__panel" role="tabpanel" id="bilivideo-panel-2"
aria-labelledby="bilivideo-tab-2" hidden>
<div class="bilivideo-frame">
<iframe title="無限挑戰 六六歌2 中集"
data-src="//player.bilibili.com/player.html?isOutside=true&aid=12288323&bvid=BV1Yx411B7TC&cid=20353561&p=2"
scrolling="no" border="0" frameborder="no" framespacing="0"
allowfullscreen="true"></iframe>
</div>
</div>
<div class="bilivideo-tabs__panel" role="tabpanel" id="bilivideo-panel-3"
aria-labelledby="bilivideo-tab-3" hidden>
<div class="bilivideo-frame">
<iframe title="無限挑戰 六六歌2 下集"
data-src="//player.bilibili.com/player.html?isOutside=true&aid=12288323&bvid=BV1Yx411B7TC&cid=20353562&p=3"
scrolling="no" border="0" frameborder="no" framespacing="0"
allowfullscreen="true"></iframe>
</div>
</div>
</div>
</div>
</section>
</div>
<p class="ebook-back-link content-container">
<a href="../index.html#story" class="btn">回到首頁 · 傳奇的轉折</a>
</p>
<footer>
<p>SECHSKIES Fanpage &copy; 2026 - 黃色氣球永遠飄揚</p>
<a href="https://jekkinoopy.github.io/Portfolio/" class="studio-link" target="_blank">
Design by <span class="mark_b">Jekkinoopy Studio</span>
</a>
</footer>
<script src="../assets/js/particles.js"></script>
<script src="../assets/js/portal-nav.js"></script>
<script>
(function () {
var root = document.getElementById("bilivideo-tabs");
if (!root) return;
var tabs = Array.prototype.slice.call(root.querySelectorAll('[role="tab"]'));
var panels = Array.prototype.slice.call(root.querySelectorAll('[role="tabpanel"]'));
function activate(index) {
tabs.forEach(function (tab, i) {
var on = i === index;
tab.setAttribute("aria-selected", on ? "true" : "false");
tab.tabIndex = on ? 0 : -1;
if (on) tab.classList.add("bilivideo-episode-nav__tab--active");
else tab.classList.remove("bilivideo-episode-nav__tab--active");
panels[i].hidden = !on;
if (on) {
var iframe = panels[i].querySelector("iframe[data-src]");
if (iframe && !iframe.getAttribute("src")) {
iframe.setAttribute("src", iframe.getAttribute("data-src"));
}
}
});
}
tabs.forEach(function (tab, i) {
tab.addEventListener("click", function () {
activate(i);
});
});
activate(0);
})();
</script>
</body>
</html> </html>
+257
View File
@@ -0,0 +1,257 @@
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>水晶男孩|無限挑戰六六歌2 — 紀實電子書</title>
<link rel="stylesheet" href="../assets/css/style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<link rel="stylesheet" href="../assets/css/tablet.css">
<style>
/* 僅本頁 main:加寬、取消左右內距(覆寫 .chronicle-reader / .content-container 的 padding */
body.totoga2-page main#totoga2-reader.chronicle-reader {
max-width: min(1280px, 96vw);
padding-left: 0;
padding-right: 0;
position: relative;
z-index: 1;
}
/* 覆寫全站 .container1200px/置中/大 padding),此頁圖列專用。
* 勿沿用全站 header,nav,.container 的 z-index:1,否則圖列會疊在後方 h2、p 內文之上。 */
body.totoga2-page #totoga2-reader .container {
width: 100%;
max-width: none;
margin: 0;
padding: 0;
height: auto;
min-height: 0;
background-color: #ccc;
clear: both;
box-sizing: border-box;
position: static;
z-index: auto;
}
/* 章節卡 .chronicle-chapter 有左右 padding;直屬 .container 負邊距拉出 → 貼滿 main 內寬 */
body.totoga2-page #totoga2-reader .chronicle-chapter {
--totoga-chapter-pad-inline: 20px;
overflow: visible;
display: flow-root;
}
body.totoga2-page #totoga2-reader .chronicle-chapter>h2,
body.totoga2-page #totoga2-reader .chronicle-chapter>p {
clear: both;
position: relative;
z-index: 1;
}
body.totoga2-page #totoga2-reader .chronicle-chapter>.container {
width: calc(100% + 2 * var(--totoga-chapter-pad-inline));
margin-left: calc(-1 * var(--totoga-chapter-pad-inline));
margin-right: calc(-1 * var(--totoga-chapter-pad-inline));
}
@media (max-width: 640px) {
body.totoga2-page #totoga2-reader .chronicle-chapter {
--totoga-chapter-pad-inline: 14px;
}
}
totoga2.html
/* 含圖列:必須寫在含 #totoga2-reader 的選取器上,否則會輸給上一段 #totoga2-reader .container 的 height,圖會溢出蓋住後文 */
body.totoga2-page #totoga2-reader.chronicle-reader .container:has(img) {
height: auto;
min-height: 0;
overflow: visible;
}
body.totoga2-page #totoga2-reader.chronicle-reader .container:has(img)::after {
content: "";
display: table;
clear: both;
}
body.totoga2-page #totoga2-reader.chronicle-reader .container:has(img)>[class^="container"] {
height: auto;
min-height: 0;
overflow: visible;
}
.container11 {
width: 100%;
height: 100%;
background-color: lightpink;
}
.container21 {
float: right;
width: 50%;
height: 100%;
background-color: lightblue;
}
.container22 {
float: left;
width: 50%;
height: 100%;
background-color: lightyellow;
}
.container31 {
float: left;
width: 33%;
height: 100%;
background-color: darkblue;
}
.container32 {
float: left;
width: 33%;
height: 100%;
background-color: darkgreen;
}
.container33 {
float: right;
width: 33%;
height: 100%;
background-color: darkmagenta;
}
.container41 {
float: left;
width: 25%;
height: 100%;
background-color: lightblue;
}
.container42 {
float: left;
width: 25%;
height: 100%;
background-color: lightgreen;
}
.container43 {
float: right;
width: 25%;
height: 100%;
background-color: lightpink;
}
.container44 {
float: right;
width: 25%;
height: 100%;
background-color: lightyellow;
}
/* 圖在欄寬內鋪滿,高度由瀏覽器依 intrinsic ratio 計算(須配合上方 :has(img) 拿掉固定列高) */
body.totoga2-page .chronicle-reader img {
width: 100%;
max-width: 100%;
height: auto;
display: block;
}
</style>
</head>
<body class="ebook-ssg2-page totoga2-page">
<header class="map-archive-header">
<div class="header-inner site-header-inner">
<h1 class="main-title">無限挑戰 · 六六歌2</h1>
<div class="subtitle-wrap">
<span class="sub-title">水晶男孩回來啦!</span>
</div>
</div>
</header>
<nav class="portal-nav" aria-label="水晶男孩推廣部導覽" data-portal-nav></nav>
<canvas id="particles"></canvas>
<main class="content-container chronicle-reader" id="totoga2-reader" data-mode="scroll">
<article class="chronicle-chapter active" id="challenge" data-title="無限挑戰">
<!-- 序號一:第一列 container21(右欄 float:right+ container22(左欄 float:left)→ 畫面左 01、右 02 -->
<!-- 序號二:第二列單一全寬 container11 -->
<div class="container">
<div class="container11">
<img src="../assets/images/totoga2/web/cover.jpg" alt="六六歌2">
</div>
</div>
<div class="container">
<div class="container22">
</div>
<div class="container21">
<img src="" alt="六六歌2 電子書跨頁圖(序號一 · 右)">
</div>
</div>
<h2>04 無限挑戰</h2>
<p>《無限挑戰》是韓國綜藝史上指標性的真人秀節目。「星期六星期六是歌手(六六歌)」企劃,成為水晶男孩 2016 回歸舞台的關鍵起點。</p>
<p>第一季掀起 90 年代懷舊熱潮,雖然水晶男孩未能完整出演,卻留下「總有一天要六人完整回到舞台」的遺憾伏筆。</p>
</article>
<article class="chronicle-chapter" id="ssg2" data-title="六六歌第二季">
<h2>06 六六歌第二季</h2>
<p>第二季改成「為單一團體打造完整回歸敘事」,保密層級更高,連主持群都縮小到劉在錫與 HAHA,避免消息提前走漏。</p>
<p>從開場的復古裝扮、試探式線索到真正揭曉團體身份,節目節奏在搞笑與懸念間拉開這場 16 年重逢序章。</p>
</article>
<article class="chronicle-chapter" id="sechskies-profile" data-title="水晶男孩">
<h2>08 水晶男孩</h2>
<p>1997 出道後迅速登頂,與同世代頂流並列,短短三年創下極高銷量與舞台紀錄,卻在 2000 無預警解散,留下集體創傷。</p>
<p>16 年間六人從未以水晶男孩名義完整合體,這次企劃不只是回憶,而是回應當年未說完的離別。</p>
</article>
<article class="chronicle-chapter" id="gather" data-title="召集">
<h2>10 召集</h2>
<p>製作組先與隊長殷志源交涉,再透過隱藏攝影機確認成員意願。大家都希望重組,卻同時知道最困難的拼圖是離開演藝圈多年的高志溶。</p>
<p>這個階段的重點不是舞台,而是「願不願意再次站在一起」的心理門檻。</p>
</article>
<article class="chronicle-chapter" id="negotiate" data-title="正式交涉">
<h2>11 正式交涉</h2>
<p>主持人與成員深度對話,回顧解散緣由、舞台記憶、KTV 挑戰與游擊演唱會規則。笑鬧之間,團魂逐漸浮現。</p>
<p>同時,節目也把高志溶議題正式擺上檯面:如果不是完整體,這次回歸是否還成立?</p>
</article>
<article class="chronicle-chapter" id="variables" data-title="變數">
<h2>16 變數</h2>
<p>排練期間接連出現傷病、手術需求與消息外流,原本理想的游擊演唱會計畫屢次被迫改寫,團隊陷入 B 計畫陰影。</p>
<p>在體力與心理都被拉到極限的情況下,成員仍選擇撐住,只為把久違舞台交回給等待 16 年的小黃。</p>
</article>
<article class="chronicle-chapter" id="surprise" data-title="驚喜">
<h2>19 驚喜</h2>
<p>當所有人幾乎接受「不完整」時,節目仍悄悄推進最後安排。高志溶與成員的情感張力在此段達到最高點。</p>
<p>這份驚喜不是綜藝反轉,而是把六顆水晶的空位真正填回舞台。</p>
</article>
<article class="chronicle-chapter" id="final-stage" data-title="登場">
<h2>21 登場</h2>
<p>眼罩揭開後,滿場黃海與哭聲同時湧現。從《請記得我》到安可,《離別曲》在那一晚變成了「重逢證詞」。</p>
<p>2000 的缺憾,在 2016 終於補上。這一頁不是結束,而是團體與粉絲共同完成的回歸章節。</p>
</article>
</main>
<p class="ebook-back-link content-container">
<a href="../index.html#story" class="btn">回到首頁 · 傳奇的轉折</a>
</p>
<footer>
<p>SECHSKIES Fanpage &copy; 2026 - 黃色氣球永遠飄揚</p>
<a href="https://jekkinoopy.github.io/Portfolio/" class="studio-link" target="_blank">
Design by <span class="mark_b">Jekkinoopy Studio</span>
</a>
</footer>
<script src="../assets/js/particles.js"></script>
<script src="../assets/js/portal-nav.js"></script>
<script src="../assets/js/totoga2.js"></script>
</body>
</html>
+6 -252
View File
@@ -1,257 +1,11 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh-TW"> <html lang="zh-TW">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="refresh" content="0; url=../totoga2/readable.html">
<title>水晶男孩|無限挑戰六六歌2 — 紀實電子書</title> <link rel="canonical" href="../totoga2/readable.html">
<link rel="stylesheet" href="../assets/css/style.css"> <title>已搬移</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"> <script>location.replace("../totoga2/readable.html" + location.hash);</script>
<link rel="stylesheet" href="../assets/css/tablet.css">
<style>
/* 僅本頁 main:加寬、取消左右內距(覆寫 .chronicle-reader / .content-container 的 padding */
body.totoga2-page main#totoga2-reader.chronicle-reader {
max-width: min(1280px, 96vw);
padding-left: 0;
padding-right: 0;
position: relative;
z-index: 1;
}
/* 覆寫全站 .container1200px/置中/大 padding),此頁圖列專用。
* 勿沿用全站 header,nav,.container 的 z-index:1,否則圖列會疊在後方 h2、p 內文之上。 */
body.totoga2-page #totoga2-reader .container {
width: 100%;
max-width: none;
margin: 0;
padding: 0;
height: auto;
min-height: 0;
background-color: #ccc;
clear: both;
box-sizing: border-box;
position: static;
z-index: auto;
}
/* 章節卡 .chronicle-chapter 有左右 padding;直屬 .container 負邊距拉出 → 貼滿 main 內寬 */
body.totoga2-page #totoga2-reader .chronicle-chapter {
--totoga-chapter-pad-inline: 20px;
overflow: visible;
display: flow-root;
}
body.totoga2-page #totoga2-reader .chronicle-chapter>h2,
body.totoga2-page #totoga2-reader .chronicle-chapter>p {
clear: both;
position: relative;
z-index: 1;
}
body.totoga2-page #totoga2-reader .chronicle-chapter>.container {
width: calc(100% + 2 * var(--totoga-chapter-pad-inline));
margin-left: calc(-1 * var(--totoga-chapter-pad-inline));
margin-right: calc(-1 * var(--totoga-chapter-pad-inline));
}
@media (max-width: 640px) {
body.totoga2-page #totoga2-reader .chronicle-chapter {
--totoga-chapter-pad-inline: 14px;
}
}
totoga2.html
/* 含圖列:必須寫在含 #totoga2-reader 的選取器上,否則會輸給上一段 #totoga2-reader .container 的 height,圖會溢出蓋住後文 */
body.totoga2-page #totoga2-reader.chronicle-reader .container:has(img) {
height: auto;
min-height: 0;
overflow: visible;
}
body.totoga2-page #totoga2-reader.chronicle-reader .container:has(img)::after {
content: "";
display: table;
clear: both;
}
body.totoga2-page #totoga2-reader.chronicle-reader .container:has(img)>[class^="container"] {
height: auto;
min-height: 0;
overflow: visible;
}
.container11 {
width: 100%;
height: 100%;
background-color: lightpink;
}
.container21 {
float: right;
width: 50%;
height: 100%;
background-color: lightblue;
}
.container22 {
float: left;
width: 50%;
height: 100%;
background-color: lightyellow;
}
.container31 {
float: left;
width: 33%;
height: 100%;
background-color: darkblue;
}
.container32 {
float: left;
width: 33%;
height: 100%;
background-color: darkgreen;
}
.container33 {
float: right;
width: 33%;
height: 100%;
background-color: darkmagenta;
}
.container41 {
float: left;
width: 25%;
height: 100%;
background-color: lightblue;
}
.container42 {
float: left;
width: 25%;
height: 100%;
background-color: lightgreen;
}
.container43 {
float: right;
width: 25%;
height: 100%;
background-color: lightpink;
}
.container44 {
float: right;
width: 25%;
height: 100%;
background-color: lightyellow;
}
/* 圖在欄寬內鋪滿,高度由瀏覽器依 intrinsic ratio 計算(須配合上方 :has(img) 拿掉固定列高) */
body.totoga2-page .chronicle-reader img {
width: 100%;
max-width: 100%;
height: auto;
display: block;
}
</style>
</head> </head>
<body><p>頁面已搬至 <a href="../totoga2/readable.html">totoga2/readable.html</a></p></body>
<body class="ebook-ssg2-page totoga2-page">
<header class="map-archive-header">
<div class="header-inner site-header-inner">
<h1 class="main-title">無限挑戰 · 六六歌2</h1>
<div class="subtitle-wrap">
<span class="sub-title">水晶男孩回來啦!</span>
</div>
</div>
</header>
<nav class="portal-nav" aria-label="水晶男孩推廣部導覽" data-portal-nav></nav>
<canvas id="particles"></canvas>
<main class="content-container chronicle-reader" id="totoga2-reader" data-mode="scroll">
<article class="chronicle-chapter active" id="challenge" data-title="無限挑戰">
<!-- 序號一:第一列 container21(右欄 float:right+ container22(左欄 float:left)→ 畫面左 01、右 02 -->
<!-- 序號二:第二列單一全寬 container11 -->
<div class="container">
<div class="container11">
<img src="../assets/images/totoga2/web/cover.jpg" alt="六六歌2">
</div>
</div>
<div class="container">
<div class="container22">
</div>
<div class="container21">
<img src="" alt="六六歌2 電子書跨頁圖(序號一 · 右)">
</div>
</div>
<h2>04 無限挑戰</h2>
<p>《無限挑戰》是韓國綜藝史上指標性的真人秀節目。「星期六星期六是歌手(六六歌)」企劃,成為水晶男孩 2016 回歸舞台的關鍵起點。</p>
<p>第一季掀起 90 年代懷舊熱潮,雖然水晶男孩未能完整出演,卻留下「總有一天要六人完整回到舞台」的遺憾伏筆。</p>
</article>
<article class="chronicle-chapter" id="ssg2" data-title="六六歌第二季">
<h2>06 六六歌第二季</h2>
<p>第二季改成「為單一團體打造完整回歸敘事」,保密層級更高,連主持群都縮小到劉在錫與 HAHA,避免消息提前走漏。</p>
<p>從開場的復古裝扮、試探式線索到真正揭曉團體身份,節目節奏在搞笑與懸念間拉開這場 16 年重逢序章。</p>
</article>
<article class="chronicle-chapter" id="sechskies-profile" data-title="水晶男孩">
<h2>08 水晶男孩</h2>
<p>1997 出道後迅速登頂,與同世代頂流並列,短短三年創下極高銷量與舞台紀錄,卻在 2000 無預警解散,留下集體創傷。</p>
<p>16 年間六人從未以水晶男孩名義完整合體,這次企劃不只是回憶,而是回應當年未說完的離別。</p>
</article>
<article class="chronicle-chapter" id="gather" data-title="召集">
<h2>10 召集</h2>
<p>製作組先與隊長殷志源交涉,再透過隱藏攝影機確認成員意願。大家都希望重組,卻同時知道最困難的拼圖是離開演藝圈多年的高志溶。</p>
<p>這個階段的重點不是舞台,而是「願不願意再次站在一起」的心理門檻。</p>
</article>
<article class="chronicle-chapter" id="negotiate" data-title="正式交涉">
<h2>11 正式交涉</h2>
<p>主持人與成員深度對話,回顧解散緣由、舞台記憶、KTV 挑戰與游擊演唱會規則。笑鬧之間,團魂逐漸浮現。</p>
<p>同時,節目也把高志溶議題正式擺上檯面:如果不是完整體,這次回歸是否還成立?</p>
</article>
<article class="chronicle-chapter" id="variables" data-title="變數">
<h2>16 變數</h2>
<p>排練期間接連出現傷病、手術需求與消息外流,原本理想的游擊演唱會計畫屢次被迫改寫,團隊陷入 B 計畫陰影。</p>
<p>在體力與心理都被拉到極限的情況下,成員仍選擇撐住,只為把久違舞台交回給等待 16 年的小黃。</p>
</article>
<article class="chronicle-chapter" id="surprise" data-title="驚喜">
<h2>19 驚喜</h2>
<p>當所有人幾乎接受「不完整」時,節目仍悄悄推進最後安排。高志溶與成員的情感張力在此段達到最高點。</p>
<p>這份驚喜不是綜藝反轉,而是把六顆水晶的空位真正填回舞台。</p>
</article>
<article class="chronicle-chapter" id="final-stage" data-title="登場">
<h2>21 登場</h2>
<p>眼罩揭開後,滿場黃海與哭聲同時湧現。從《請記得我》到安可,《離別曲》在那一晚變成了「重逢證詞」。</p>
<p>2000 的缺憾,在 2016 終於補上。這一頁不是結束,而是團體與粉絲共同完成的回歸章節。</p>
</article>
</main>
<p class="ebook-back-link content-container">
<a href="../index.html#story" class="btn">回到首頁 · 傳奇的轉折</a>
</p>
<footer>
<p>SECHSKIES Fanpage &copy; 2026 - 黃色氣球永遠飄揚</p>
<a href="https://jekkinoopy.github.io/Portfolio/" class="studio-link" target="_blank">
Design by <span class="mark_b">Jekkinoopy Studio</span>
</a>
</footer>
<script src="../assets/js/particles.js"></script>
<script src="../assets/js/portal-nav.js"></script>
<script src="../assets/js/totoga2.js"></script>
</body>
</html> </html>
+7 -7
View File
@@ -177,33 +177,33 @@
</div> </div>
<p class="intro-text"> <p class="intro-text">
像劇情的反轉一樣過癮:這幾個節點,剛好是許多人從「旁觀綜藝」滑進「正式入坑」的轉軌。若想讀對白級細節,請開 像劇情的反轉一樣過癮:這幾個節點,剛好是許多人從「旁觀綜藝」滑進「正式入坑」的轉軌。若想讀對白級細節,請開
<a href="fallen/totoga2.html">六六歌2 整合專區</a>(影片/電子書/紀實長文八章,同一頁切換模式即可)。 <a href="totoga2/readable.html">六六歌2 整合專區</a>(影片/電子書/紀實長文八章,同一頁切換模式即可)。
</p> </p>
<div class="story-ebook-cta"> <div class="story-ebook-cta">
<a href="fallen/totoga2.html#ebook" class="btn story-ebook-btn">開啟六六歌2 紀實電子書</a> <a href="totoga2/readable.html#ebook" class="btn story-ebook-btn">開啟六六歌2 紀實電子書</a>
<a href="fallen/totoga2.html" class="btn story-ebook-btn">六六歌2 整合專區</a> <a href="totoga2/readable.html" class="btn story-ebook-btn">六六歌2 整合專區</a>
</div> </div>
<div class="merged-storyline"> <div class="merged-storyline">
<article id="special" class="story-node" data-era="六六歌"> <article id="special" class="story-node" data-era="六六歌">
<h3>六六歌實錄</h3> <h3>六六歌實錄</h3>
<p>把懸念、試探與哭點縫在同一條時間軸上;很多人第一次真正把「水晶男孩」打進搜尋框,就是從這種瘋狂的剪輯節奏開始。</p> <p>把懸念、試探與哭點縫在同一條時間軸上;很多人第一次真正把「水晶男孩」打進搜尋框,就是從這種瘋狂的剪輯節奏開始。</p>
<p><a href="fallen/totoga2.html#ssg2">對照這一段幕後敘事</a></p> <p><a href="totoga2/readable.html#ssg2">對照這一段幕後敘事</a></p>
</article> </article>
<article id="negotiate" class="story-node" data-era="交涉"> <article id="negotiate" class="story-node" data-era="交涉">
<h3>命運的交涉</h3> <h3>命運的交涉</h3>
<p>KTV、游擊演唱會規則、與其說講道理不如說把真心擺上桌面——交涉的不是合約字面,而是還願不願意再一次肩並肩。</p> <p>KTV、游擊演唱會規則、與其說講道理不如說把真心擺上桌面——交涉的不是合約字面,而是還願不願意再一次肩並肩。</p>
<p><a href="fallen/totoga2.html#negotiate">讀交涉與對話肌理</a></p> <p><a href="totoga2/readable.html#negotiate">讀交涉與對話肌理</a></p>
</article> </article>
<article id="complete" class="story-node" data-era="歸位"> <article id="complete" class="story-node" data-era="歸位">
<h3>拼圖的歸位</h3> <h3>拼圖的歸位</h3>
<p>變數一個個被排除之後,驚喜接上登場段落;缺一角舞台的視覺,終於對齊觀眾席上堅守的那片黃。</p> <p>變數一個個被排除之後,驚喜接上登場段落;缺一角舞台的視覺,終於對齊觀眾席上堅守的那片黃。</p>
<p><a href="fallen/totoga2.html#gather">從「召集」段開始補這條線</a></p> <p><a href="totoga2/readable.html#gather">從「召集」段開始補這條線</a></p>
</article> </article>
<article id="past" class="story-node" data-era="最初"> <article id="past" class="story-node" data-era="最初">
<h3>巔峰與雨天</h3> <h3>巔峰與雨天</h3>
<p>急凍、告別、各自的跑道——並不是要你沉浸遺憾,而是讓你懂:後來每一次亮燈,為什麼會更值得尖叫。</p> <p>急凍、告別、各自的跑道——並不是要你沉浸遺憾,而是讓你懂:後來每一次亮燈,為什麼會更值得尖叫。</p>
<p><a href="fallen/totoga2.html#sechskies-profile">讀這條脈絡的起點</a></p> <p><a href="totoga2/readable.html#sechskies-profile">讀這條脈絡的起點</a></p>
</article> </article>
</div> </div>
</section> --> </section> -->
+169
View File
@@ -0,0 +1,169 @@
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>水晶男孩|六六歌2 — 紀實電子書</title>
<link rel="stylesheet" href="../assets/css/style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<link rel="stylesheet" href="../assets/css/tablet.css">
<link rel="stylesheet" href="split-nav.css">
</head>
<body class="ebook-ssg2-page totoga2-page totoga2-ebook-copy-page">
<header class="map-archive-header">
<div class="header-inner site-header-inner">
<h1 class="main-title">無限挑戰 · 六六歌2</h1>
<div class="subtitle-wrap">
<span class="sub-title">水晶男孩回來啦!</span>
</div>
</div>
</header>
<nav class="portal-nav" aria-label="水晶男孩推廣部導覽" data-portal-nav></nav>
<canvas id="particles"></canvas>
<nav class="ebook-back-link content-container totoga2-split-crossnav" aria-label="六六歌2 閱讀入口">
<a href="timeline.html" class="btn" title="時間軸與紀實八章長文單頁">時間軸</a>
<a href="ebook.html" class="btn" aria-current="page" title="紀實電子書內容獨立成頁">電子書</a>
<a href="readable.html" class="btn" title="單頁整合:影片/電子書/長文模式切換與八章錨點">圖文好讀版</a>
<a href="video.html" class="btn" title="無限挑戰 · 六六歌2 嵌入影片單頁">影片</a>
</nav>
<div class="content-container ebook-main">
<section class="ebook-intro section" aria-label="電子書說明">
<h2 class="section-title">紀實電子書</h2>
<p class="ebook-intro-lead">
四月那場重逢,不只是一集綜藝,而是塵封十六年的旋律,終於在笑聲與淚水裡再次被聽見。這本紀實電子書留住《無限挑戰》六六歌2
的每一頁:有驚喜、有拉扯,也有那些當時說不出口的想念。慢慢翻過去吧——我們後來才明白,有些情誼早已超越了表演,只是在節目的鏡頭裡,換了一種方式,陪彼此一起變老。
</p>
<div class="ebook-intro-notes fa-before-lead fa-before-lead--balloon">
<p class="ebook-intro-note">看看後面飄落的氣球,等等十秒,電子書就會出現囉。</p>
<p class="ebook-intro-note">翻頁方式:點擊書頁左、右側,或拖曳頁角即可往前/往後翻。</p>
</div>
</section>
<!-- <div class="flip-ebook-shell">
<div class="flip-ebook-aspect">
<iframe src="https://online.fliphtml5.com/tjyxm/vqff/" title="2023_電子書_無限挑戰六六歌2_final跨頁"
allowfullscreen></iframe>
</div>
</div> -->
<div class="flip-ebook-shell">
<div id="book-container" class="flip-ebook-aspect flip-ebook-aspect--pageflip">
<!-- PDF.js + PageFlip 會在此產生頁面 -->
<div id="my-flipbook"></div>
</div>
</div>
</div>
<p class="ebook-back-link content-container">
<a href="../index.html#story" class="btn">回到首頁 · 傳奇的轉折</a>
</p>
<footer>
<p>SECHSKIES Fanpage &copy; 2026 - 黃色氣球永遠飄揚</p>
<a href="https://jekkinoopy.github.io/Portfolio/" class="studio-link" target="_blank">
Design by <span class="mark_b">Jekkinoopy Studio</span>
</a>
</footer>
<script src="../assets/js/particles.js"></script>
<script src="../assets/js/portal-nav.js"></script>
<!-- 1. 引入 PDF.js 核心庫 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.min.js"></script>
<!-- 2. 引入 PageFlip -->
<script src="https://cdn.jsdelivr.net/npm/page-flip/dist/js/page-flip.browser.js"></script>
<script>
pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.worker.min.js';
/** 專案內實際存在的 PDF(原 totoga2/ebook/totoga2_ebook.pdf 尚未建檔) */
var EBOOK_PDF_URL = '../assets/images/totoga2/totoga2.pdf';
function showEbookError(message) {
var box = document.getElementById('my-flipbook');
if (!box) return;
box.innerHTML = '<p class="ebook-pdf-error" role="alert">' + message + '</p>';
}
async function initEbook(pdfUrl) {
var container = document.getElementById('my-flipbook');
if (!container) throw new Error('找不到 #my-flipbook');
if (typeof pdfjsLib === 'undefined') throw new Error('PDF.js 未載入');
if (typeof St === 'undefined' || !St.PageFlip) throw new Error('PageFlipSt.PageFlip)未載入');
var loadingTask = pdfjsLib.getDocument(pdfUrl);
var pdf = await loadingTask.promise;
/* 第 1 頁為封面;內文比例以第 2 頁為準(與 PageFlip showCover 一致) */
var sizePageIndex = pdf.numPages >= 2 ? 2 : 1;
var sizePage = await pdf.getPage(sizePageIndex);
var natural = sizePage.getViewport({ scale: 1 });
var shell = document.querySelector('.flip-ebook-shell');
var bookHost = document.getElementById('book-container');
if (bookHost) {
bookHost.style.width = '100%';
bookHost.style.maxWidth = '100%';
bookHost.style.marginLeft = '0';
bookHost.style.marginRight = '0';
}
container.style.width = '100%';
container.style.maxWidth = '100%';
var measureEl = bookHost || shell;
var pageW = Math.max(320, Math.floor((measureEl && measureEl.clientWidth) || 0));
var pageH = Math.floor(pageW * (natural.height / natural.width));
var renderScale = (pageW / natural.width) * Math.min(window.devicePixelRatio || 1, 2);
for (var i = 1; i <= pdf.numPages; i++) {
var page = await pdf.getPage(i);
var viewport = page.getViewport({ scale: renderScale });
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
await page.render({ canvasContext: context, viewport: viewport }).promise;
var pageElement = document.createElement('div');
pageElement.className = 'page';
if (i === 1) {
pageElement.setAttribute('data-density', 'hard');
} else if (i === pdf.numPages) {
pageElement.setAttribute('data-density', 'hard');
}
pageElement.appendChild(canvas);
container.appendChild(pageElement);
}
var pageFlip = new St.PageFlip(container, {
width: pageW,
height: pageH,
/* stretch 在寬容器會固定走 landscape(總寬=2×半頁),跨頁 PDF 會被切成左空白+右半頁 */
size: 'fixed',
usePortrait: true,
showCover: true,
startPage: 0,
autoSize: true,
drawShadow: true,
maxShadowOpacity: 0.4
});
pageFlip.loadFromHTML(document.querySelectorAll('#my-flipbook .page'));
}
initEbook(EBOOK_PDF_URL).catch(function (err) {
console.error(err);
showEbookError(
'電子書 PDF 無法載入或翻頁初始化失敗。若用本機直接開檔案(file://),請改由本機伺服器開啟;並確認路徑存在:<code>'
+ EBOOK_PDF_URL + '</code>'
);
});
</script>
</body>
</html>
+265
View File
@@ -0,0 +1,265 @@
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>水晶男孩|無限挑戰六六歌2 — 紀實電子書</title>
<link rel="stylesheet" href="../assets/css/style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<link rel="stylesheet" href="../assets/css/tablet.css">
<style>
/* 僅本頁 main:加寬、取消左右內距(覆寫 .chronicle-reader / .content-container 的 padding */
body.totoga2-page main#totoga2-reader.chronicle-reader {
max-width: min(1280px, 96vw);
padding-left: 0;
padding-right: 0;
position: relative;
z-index: 1;
}
/* 覆寫全站 .container1200px/置中/大 padding),此頁圖列專用。
* 勿沿用全站 header,nav,.container 的 z-index:1,否則圖列會疊在後方 h2、p 內文之上。 */
body.totoga2-page #totoga2-reader .container {
width: 100%;
max-width: none;
margin: 0;
padding: 0;
height: auto;
min-height: 0;
background-color: #ccc;
clear: both;
box-sizing: border-box;
position: static;
z-index: auto;
}
/* 章節卡 .chronicle-chapter 有左右 padding;直屬 .container 負邊距拉出 → 貼滿 main 內寬 */
body.totoga2-page #totoga2-reader .chronicle-chapter {
--totoga-chapter-pad-inline: 20px;
overflow: visible;
display: flow-root;
}
body.totoga2-page #totoga2-reader .chronicle-chapter>h2,
body.totoga2-page #totoga2-reader .chronicle-chapter>p {
clear: both;
position: relative;
z-index: 1;
}
body.totoga2-page #totoga2-reader .chronicle-chapter>.container {
width: calc(100% + 2 * var(--totoga-chapter-pad-inline));
margin-left: calc(-1 * var(--totoga-chapter-pad-inline));
margin-right: calc(-1 * var(--totoga-chapter-pad-inline));
}
@media (max-width: 640px) {
body.totoga2-page #totoga2-reader .chronicle-chapter {
--totoga-chapter-pad-inline: 14px;
}
}
totoga2.html
/* 含圖列:必須寫在含 #totoga2-reader 的選取器上,否則會輸給上一段 #totoga2-reader .container 的 height,圖會溢出蓋住後文 */
body.totoga2-page #totoga2-reader.chronicle-reader .container:has(img) {
height: auto;
min-height: 0;
overflow: visible;
}
body.totoga2-page #totoga2-reader.chronicle-reader .container:has(img)::after {
content: "";
display: table;
clear: both;
}
body.totoga2-page #totoga2-reader.chronicle-reader .container:has(img)>[class^="container"] {
height: auto;
min-height: 0;
overflow: visible;
}
.container11 {
width: 100%;
height: 100%;
background-color: lightpink;
}
.container21 {
float: right;
width: 50%;
height: 100%;
background-color: lightblue;
}
.container22 {
float: left;
width: 50%;
height: 100%;
background-color: lightyellow;
}
.container31 {
float: left;
width: 33%;
height: 100%;
background-color: darkblue;
}
.container32 {
float: left;
width: 33%;
height: 100%;
background-color: darkgreen;
}
.container33 {
float: right;
width: 33%;
height: 100%;
background-color: darkmagenta;
}
.container41 {
float: left;
width: 25%;
height: 100%;
background-color: lightblue;
}
.container42 {
float: left;
width: 25%;
height: 100%;
background-color: lightgreen;
}
.container43 {
float: right;
width: 25%;
height: 100%;
background-color: lightpink;
}
.container44 {
float: right;
width: 25%;
height: 100%;
background-color: lightyellow;
}
/* 圖在欄寬內鋪滿,高度由瀏覽器依 intrinsic ratio 計算(須配合上方 :has(img) 拿掉固定列高) */
body.totoga2-page .chronicle-reader img {
width: 100%;
max-width: 100%;
height: auto;
display: block;
}
</style>
<link rel="stylesheet" href="split-nav.css">
</head>
<body class="ebook-ssg2-page totoga2-page">
<header class="map-archive-header">
<div class="header-inner site-header-inner">
<h1 class="main-title">無限挑戰 · 六六歌2</h1>
<div class="subtitle-wrap">
<span class="sub-title">水晶男孩回來啦!</span>
</div>
</div>
</header>
<nav class="portal-nav" aria-label="水晶男孩推廣部導覽" data-portal-nav></nav>
<canvas id="particles"></canvas>
<nav class="ebook-back-link content-container totoga2-split-crossnav" aria-label="六六歌2 閱讀入口">
<a href="timeline.html" class="btn" title="時間軸與紀實八章長文單頁">時間軸</a>
<a href="ebook.html" class="btn" title="紀實電子書內容獨立成頁">電子書</a>
<a href="readable.html" class="btn" aria-current="page" title="單頁整合:影片/電子書/長文模式切換與八章錨點">圖文好讀版</a>
<a href="video.html" class="btn" title="無限挑戰 · 六六歌2 嵌入影片單頁">影片</a>
</nav>
<main class="content-container chronicle-reader" id="totoga2-reader" data-mode="scroll">
<article class="chronicle-chapter active" id="challenge" data-title="無限挑戰">
<!-- 序號一:第一列 container21(右欄 float:right+ container22(左欄 float:left)→ 畫面左 01、右 02 -->
<!-- 序號二:第二列單一全寬 container11 -->
<div class="container">
<div class="container11">
<img src="../assets/images/totoga2/web/cover.jpg" alt="六六歌2">
</div>
</div>
<div class="container">
<div class="container22">
</div>
<div class="container21">
<img src="" alt="六六歌2 電子書跨頁圖(序號一 · 右)">
</div>
</div>
<h2>04 無限挑戰</h2>
<p>《無限挑戰》是韓國綜藝史上指標性的真人秀節目。「星期六星期六是歌手(六六歌)」企劃,成為水晶男孩 2016 回歸舞台的關鍵起點。</p>
<p>第一季掀起 90 年代懷舊熱潮,雖然水晶男孩未能完整出演,卻留下「總有一天要六人完整回到舞台」的遺憾伏筆。</p>
</article>
<article class="chronicle-chapter" id="ssg2" data-title="六六歌第二季">
<h2>06 六六歌第二季</h2>
<p>第二季改成「為單一團體打造完整回歸敘事」,保密層級更高,連主持群都縮小到劉在錫與 HAHA,避免消息提前走漏。</p>
<p>從開場的復古裝扮、試探式線索到真正揭曉團體身份,節目節奏在搞笑與懸念間拉開這場 16 年重逢序章。</p>
</article>
<article class="chronicle-chapter" id="sechskies-profile" data-title="水晶男孩">
<h2>08 水晶男孩</h2>
<p>1997 出道後迅速登頂,與同世代頂流並列,短短三年創下極高銷量與舞台紀錄,卻在 2000 無預警解散,留下集體創傷。</p>
<p>16 年間六人從未以水晶男孩名義完整合體,這次企劃不只是回憶,而是回應當年未說完的離別。</p>
</article>
<article class="chronicle-chapter" id="gather" data-title="召集">
<h2>10 召集</h2>
<p>製作組先與隊長殷志源交涉,再透過隱藏攝影機確認成員意願。大家都希望重組,卻同時知道最困難的拼圖是離開演藝圈多年的高志溶。</p>
<p>這個階段的重點不是舞台,而是「願不願意再次站在一起」的心理門檻。</p>
</article>
<article class="chronicle-chapter" id="negotiate" data-title="正式交涉">
<h2>11 正式交涉</h2>
<p>主持人與成員深度對話,回顧解散緣由、舞台記憶、KTV 挑戰與游擊演唱會規則。笑鬧之間,團魂逐漸浮現。</p>
<p>同時,節目也把高志溶議題正式擺上檯面:如果不是完整體,這次回歸是否還成立?</p>
</article>
<article class="chronicle-chapter" id="variables" data-title="變數">
<h2>16 變數</h2>
<p>排練期間接連出現傷病、手術需求與消息外流,原本理想的游擊演唱會計畫屢次被迫改寫,團隊陷入 B 計畫陰影。</p>
<p>在體力與心理都被拉到極限的情況下,成員仍選擇撐住,只為把久違舞台交回給等待 16 年的小黃。</p>
</article>
<article class="chronicle-chapter" id="surprise" data-title="驚喜">
<h2>19 驚喜</h2>
<p>當所有人幾乎接受「不完整」時,節目仍悄悄推進最後安排。高志溶與成員的情感張力在此段達到最高點。</p>
<p>這份驚喜不是綜藝反轉,而是把六顆水晶的空位真正填回舞台。</p>
</article>
<article class="chronicle-chapter" id="final-stage" data-title="登場">
<h2>21 登場</h2>
<p>眼罩揭開後,滿場黃海與哭聲同時湧現。從《請記得我》到安可,《離別曲》在那一晚變成了「重逢證詞」。</p>
<p>2000 的缺憾,在 2016 終於補上。這一頁不是結束,而是團體與粉絲共同完成的回歸章節。</p>
</article>
</main>
<p class="ebook-back-link content-container">
<a href="../index.html#story" class="btn">回到首頁 · 傳奇的轉折</a>
</p>
<footer>
<p>SECHSKIES Fanpage &copy; 2026 - 黃色氣球永遠飄揚</p>
<a href="https://jekkinoopy.github.io/Portfolio/" class="studio-link" target="_blank">
Design by <span class="mark_b">Jekkinoopy Studio</span>
</a>
</footer>
<script src="../assets/js/particles.js"></script>
<script src="../assets/js/portal-nav.js"></script>
<script src="../assets/js/totoga2.js"></script>
</body>
</html>
+85
View File
@@ -0,0 +1,85 @@
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>水晶男孩|六六歌2 — 時間軸與紀實長文</title>
<link rel="stylesheet" href="../assets/css/style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<link rel="stylesheet" href="../assets/css/tablet.css">
<link rel="stylesheet" href="split-nav.css">
</head>
<body class="ebook-ssg2-page totoga2-page">
<header class="map-archive-header">
<div class="header-inner site-header-inner">
<h1 class="main-title">無限挑戰 · 六六歌2</h1>
<div class="subtitle-wrap">
<span class="sub-title">水晶男孩回來啦!</span>
</div>
</div>
</header>
<nav class="portal-nav" aria-label="水晶男孩推廣部導覽" data-portal-nav></nav>
<canvas id="particles"></canvas>
<nav class="ebook-back-link content-container totoga2-split-crossnav" aria-label="六六歌2 閱讀入口">
<a href="timeline.html" class="btn" aria-current="page" title="時間軸與紀實八章長文單頁">時間軸</a>
<a href="ebook.html" class="btn" title="紀實電子書內容獨立成頁">電子書</a>
<a href="readable.html" class="btn" title="單頁整合:影片/電子書/長文模式切換與八章錨點">圖文好讀版</a>
<a href="video.html" class="btn" title="無限挑戰 · 六六歌2 嵌入影片單頁">影片</a>
</nav>
<div class="totoga2-reader-hub content-container ebook-main">
<section class="story-archive totoga2-plot content-container" aria-labelledby="totoga2-plot-title">
<h2 class="section-title" id="totoga2-plot-title">傳奇的轉折</h2>
<div class="subtitle-wrap">
<span class="sub-title">PLOT TWIST</span>
</div>
<p class="intro-text">
與首頁相同的節點提要;點下方連結可跳到本頁「紀實長文」對應章節(八章皆在本頁,無需另開檔案)。
</p>
<div class="merged-storyline">
<article id="totoga2-special" class="story-node" data-era="六六歌">
<h3>六六歌實錄</h3>
<p>把懸念、試探與哭點縫在同一條時間軸上;很多人第一次真正把「水晶男孩」打進搜尋框,就是從這種瘋狂的剪輯節奏開始。</p>
<p><a href="#ssg2">對照本頁幕後敘事 · 六六歌第二季</a></p>
</article>
<article id="totoga2-negotiate-card" class="story-node" data-era="交涉">
<h3>命運的交涉</h3>
<p>KTV、游擊演唱會規則、與其說講道理不如說把真心擺上桌面——交涉的不是合約字面,而是還願不願意再一次肩並肩。</p>
<p><a href="#negotiate">讀本頁 · 正式交涉</a></p>
</article>
<article id="totoga2-complete" class="story-node" data-era="歸位">
<h3>拼圖的歸位</h3>
<p>變數一個個被排除之後,驚喜接上登場段落;缺一角舞台的視覺,終於對齊觀眾席上堅守的那片黃。</p>
<p><a href="#gather">從本頁「召集」段開始補這條線</a></p>
</article>
<article id="totoga2-past" class="story-node" data-era="最初">
<h3>巔峰與雨天</h3>
<p>急凍、告別、各自的跑道——並不是要你沉浸遺憾,而是讓你懂:後來每一次亮燈,為什麼會更值得尖叫。</p>
<p><a href="#sechskies-profile">讀本頁脈絡起點 · 水晶男孩</a></p>
</article>
</div>
</section>
<p class="ebook-back-link content-container">
<a href="../index.html#story" class="btn">回到首頁 · 傳奇的轉折</a>
</p>
<footer>
<p>SECHSKIES Fanpage &copy; 2026 - 黃色氣球永遠飄揚</p>
<a href="https://jekkinoopy.github.io/Portfolio/" class="studio-link" target="_blank">
Design by <span class="mark_b">Jekkinoopy Studio</span>
</a>
</footer>
<script src="../assets/js/particles.js"></script>
<script src="../assets/js/portal-nav.js"></script>
<script src="../assets/js/totoga2.js"></script>
</body>
</html>
+121
View File
@@ -0,0 +1,121 @@
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>水晶男孩|六六歌2 — 節目影片</title>
<link rel="stylesheet" href="../assets/css/style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<link rel="stylesheet" href="../assets/css/tablet.css">
<link rel="stylesheet" href="split-nav.css">
</head>
<body class="ebook-ssg2-page totoga2-page totoga2-video-copy-page">
<nav class="portal-nav" aria-label="水晶男孩推廣部導覽" data-portal-nav></nav>
<canvas id="particles"></canvas>
<nav class="ebook-back-link content-container totoga2-split-crossnav" aria-label="六六歌2 閱讀入口">
<a href="timeline.html" class="btn" title="時間軸與紀實八章長文單頁">時間軸</a>
<a href="ebook.html" class="btn" title="紀實電子書內容獨立成頁">電子書</a>
<a href="readable.html" class="btn" title="單頁整合:影片/電子書/長文模式切換與八章錨點">圖文好讀版</a>
<a href="video.html" class="btn" aria-current="page" title="無限挑戰 · 六六歌2 嵌入影片單頁">影片</a>
</nav>
<div class="content-container ebook-main">
<section class="ebook-intro section" aria-labelledby="ebook-bilivideo-heading">
<h2 class="section-title" id="ebook-bilivideo-heading">節目影片</h2>
<div id="bilivideo-tabs" class="bilivideo-tabs__shell">
<!-- tablist 在 DOM 上須先於 iframe,否則 B 站播放器合成層易蓋住下方按鈕文字;畫面順序改由 CSS flex order 控制 -->
<nav class="bilivideo-episode-nav" role="tablist" aria-label="節目影片集數">
<button type="button" class="btn bilivideo-episode-nav__tab bilivideo-episode-nav__tab--active"
role="tab" id="bilivideo-tab-1" aria-controls="bilivideo-panel-1"
aria-selected="true">上集</button>
<button type="button" class="btn bilivideo-episode-nav__tab" role="tab" id="bilivideo-tab-2"
aria-controls="bilivideo-panel-2" aria-selected="false" tabindex="-1">中集</button>
<button type="button" class="btn bilivideo-episode-nav__tab" role="tab" id="bilivideo-tab-3"
aria-controls="bilivideo-panel-3" aria-selected="false" tabindex="-1">下集</button>
</nav>
<div class="bilivideo-tabs__panels">
<div class="bilivideo-tabs__panel" role="tabpanel" id="bilivideo-panel-1"
aria-labelledby="bilivideo-tab-1">
<div class="bilivideo-frame">
<iframe title="無限挑戰 六六歌2 上集"
src="//player.bilibili.com/player.html?isOutside=true&aid=12288323&bvid=BV1Yx411B7TC&cid=20353565&p=1"
scrolling="no" border="0" frameborder="no" framespacing="0"
allowfullscreen="true"></iframe>
</div>
</div>
<div class="bilivideo-tabs__panel" role="tabpanel" id="bilivideo-panel-2"
aria-labelledby="bilivideo-tab-2" hidden>
<div class="bilivideo-frame">
<iframe title="無限挑戰 六六歌2 中集"
data-src="//player.bilibili.com/player.html?isOutside=true&aid=12288323&bvid=BV1Yx411B7TC&cid=20353561&p=2"
scrolling="no" border="0" frameborder="no" framespacing="0"
allowfullscreen="true"></iframe>
</div>
</div>
<div class="bilivideo-tabs__panel" role="tabpanel" id="bilivideo-panel-3"
aria-labelledby="bilivideo-tab-3" hidden>
<div class="bilivideo-frame">
<iframe title="無限挑戰 六六歌2 下集"
data-src="//player.bilibili.com/player.html?isOutside=true&aid=12288323&bvid=BV1Yx411B7TC&cid=20353562&p=3"
scrolling="no" border="0" frameborder="no" framespacing="0"
allowfullscreen="true"></iframe>
</div>
</div>
</div>
</div>
</section>
</div>
<p class="ebook-back-link content-container">
<a href="../index.html#story" class="btn">回到首頁 · 傳奇的轉折</a>
</p>
<footer>
<p>SECHSKIES Fanpage &copy; 2026 - 黃色氣球永遠飄揚</p>
<a href="https://jekkinoopy.github.io/Portfolio/" class="studio-link" target="_blank">
Design by <span class="mark_b">Jekkinoopy Studio</span>
</a>
</footer>
<script src="../assets/js/particles.js"></script>
<script src="../assets/js/portal-nav.js"></script>
<script>
(function () {
var root = document.getElementById("bilivideo-tabs");
if (!root) return;
var tabs = Array.prototype.slice.call(root.querySelectorAll('[role="tab"]'));
var panels = Array.prototype.slice.call(root.querySelectorAll('[role="tabpanel"]'));
function activate(index) {
tabs.forEach(function (tab, i) {
var on = i === index;
tab.setAttribute("aria-selected", on ? "true" : "false");
tab.tabIndex = on ? 0 : -1;
if (on) tab.classList.add("bilivideo-episode-nav__tab--active");
else tab.classList.remove("bilivideo-episode-nav__tab--active");
panels[i].hidden = !on;
if (on) {
var iframe = panels[i].querySelector("iframe[data-src]");
if (iframe && !iframe.getAttribute("src")) {
iframe.setAttribute("src", iframe.getAttribute("data-src"));
}
}
});
}
tabs.forEach(function (tab, i) {
tab.addEventListener("click", function () {
activate(i);
});
});
activate(0);
})();
</script>
</body>
</html>