六六歌實錄
把懸念、試探與哭點縫在同一條時間軸上;很多人第一次真正把「水晶男孩」打進搜尋框,就是從這種瘋狂的剪輯節奏開始。
- +diff --git a/index.html b/index.html index 9a62c58..9e30611 100644 --- a/index.html +++ b/index.html @@ -144,33 +144,35 @@ PLOT TWIST
- 像劇情的反轉一樣過癮:這幾個節點,剛好是許多人從「旁觀綜藝」滑進「正式入坑」的轉軌。若想讀對白級細節,隨時可切到完整紀實長文。 - 開啟完整紀實篇章 + 像劇情的反轉一樣過癮:這幾個節點,剛好是許多人從「旁觀綜藝」滑進「正式入坑」的轉軌。若想讀對白級細節,可開 + 六六歌2 整合專區(影片/電子書/長卷),或使用獨立長文 + 傳奇紀實長卷。
把懸念、試探與哭點縫在同一條時間軸上;很多人第一次真正把「水晶男孩」打進搜尋框,就是從這種瘋狂的剪輯節奏開始。
- +KTV、游擊演唱會規則、與其說講道理不如說把真心擺上桌面——交涉的不是合約字面,而是還願不願意再一次肩並肩。
- +變數一個個被排除之後,驚喜接上登場段落;缺一角舞台的視覺,終於對齊觀眾席上堅守的那片黃。
- +急凍、告別、各自的跑道——並不是要你沉浸遺憾,而是讓你懂:後來每一次亮燈,為什麼會更值得尖叫。
- +
+ 以下為本專案目前所有 HTML 頁面:每張卡片含連結、瀏覽器分頁上的標題(<title>)、以及主要區塊/錨點,方便你開發或簡報時一鍵跳轉。
+ 此頁未放入全站導覽列,僅供你自行書籤或輸入網址(例如 site-guide.html)開啟。
+
主視覺與導覽列;內文以區塊錨點分段。
+Meta refresh → index.html;保留給舊書籤。
單頁多區塊版型(實驗/簡報用)。
+整合:影片/電子書/傳奇的轉折+長卷。章節錨點與 chronicle.html 相同(#ssg2 等),網址較短。
FlipHTML5 跨頁電子書全螢幕嵌入。
+map-archive-headerebook-main → flip-ebook-shell八章長文;網漫模式/分頁模式。
+<html lang="ko">;歌詞+YouTube 嵌入單頁。
.lyrics-layout — 主標+表格雙欄
+ 以下為 Bilibili 嵌入播放器(16:9)。若無法播放,請至站內搜尋同一 BV 號;中集、下集請將 iframe 的 bvid 換成你的分集連結。
+
預設與上集同一支;請替換 bvid 為中集 BV。
預設與上集同一支;請替換 bvid 為下集 BV。
+ 以下為《無限挑戰》六六歌2 相關跨頁電子書(FlipHTML5)。若載入較慢,請稍候或重新整理;全螢幕閱讀請使用閱讀器內建控制項。 +
++ 與首頁相同的節點提要;點下方連結可跳到本頁「紀實長卷」對應章節。完整獨立長卷仍可在 + 傳奇紀實長卷 閱讀。 +
+ +把懸念、試探與哭點縫在同一條時間軸上;很多人第一次真正把「水晶男孩」打進搜尋框,就是從這種瘋狂的剪輯節奏開始。
+ +KTV、游擊演唱會規則、與其說講道理不如說把真心擺上桌面——交涉的不是合約字面,而是還願不願意再一次肩並肩。
+ +變數一個個被排除之後,驚喜接上登場段落;缺一角舞台的視覺,終於對齊觀眾席上堅守的那片黃。
+ +急凍、告別、各自的跑道——並不是要你沉浸遺憾,而是讓你懂:後來每一次亮燈,為什麼會更值得尖叫。
+ +《無限挑戰》是韓國綜藝史上指標性的真人秀節目。「星期六星期六是歌手(六六歌)」企劃,成為水晶男孩 2016 回歸舞台的關鍵起點。
+第一季掀起 90 年代懷舊熱潮,雖然水晶男孩未能完整出演,卻留下「總有一天要六人完整回到舞台」的遺憾伏筆。
+第二季改成「為單一團體打造完整回歸敘事」,保密層級更高,連主持群都縮小到劉在錫與 HAHA,避免消息提前走漏。
+從開場的復古裝扮、試探式線索到真正揭曉團體身份,節目節奏在搞笑與懸念間拉開這場 16 年重逢序章。
+1997 出道後迅速登頂,與同世代頂流並列,短短三年創下極高銷量與舞台紀錄,卻在 2000 無預警解散,留下集體創傷。
+16 年間六人從未以水晶男孩名義完整合體,這次企劃不只是回憶,而是回應當年未說完的離別。
+製作組先與隊長殷志源交涉,再透過隱藏攝影機確認成員意願。大家都希望重組,卻同時知道最困難的拼圖是離開演藝圈多年的高志溶。
+這個階段的重點不是舞台,而是「願不願意再次站在一起」的心理門檻。
+主持人與成員深度對話,回顧解散緣由、舞台記憶、KTV 挑戰與游擊演唱會規則。笑鬧之間,團魂逐漸浮現。
+同時,節目也把高志溶議題正式擺上檯面:如果不是完整體,這次回歸是否還成立?
+排練期間接連出現傷病、手術需求與消息外流,原本理想的游擊演唱會計畫屢次被迫改寫,團隊陷入 B 計畫陰影。
+在體力與心理都被拉到極限的情況下,成員仍選擇撐住,只為把久違舞台交回給等待 16 年的小黃。
+當所有人幾乎接受「不完整」時,節目仍悄悄推進最後安排。高志溶與成員的情感張力在此段達到最高點。
+這份驚喜不是綜藝反轉,而是把六顆水晶的空位真正填回舞台。
+眼罩揭開後,滿場黃海與哭聲同時湧現。從《請記得我》到安可,《離別曲》在那一晚變成了「重逢證詞」。
+2000 的缺憾,在 2016 終於補上。這一頁不是結束,而是團體與粉絲共同完成的回歸章節。
++ 回到首頁 · 傳奇的轉折 + 僅開電子書全螢幕版 +
+ + + + + + + + + diff --git a/totoga2.js b/totoga2.js new file mode 100644 index 0000000..9030f08 --- /dev/null +++ b/totoga2.js @@ -0,0 +1,88 @@ +(() => { + const hubButtons = Array.from(document.querySelectorAll("[data-totoga-hub]")); + const hubPanels = Array.from(document.querySelectorAll("[data-totoga-panel]")); + + function setHubPanel(name) { + hubButtons.forEach((btn) => btn.classList.toggle("active", btn.dataset.totogaHub === name)); + hubPanels.forEach((panel) => { + panel.hidden = panel.dataset.totogaPanel !== name; + }); + } + + hubButtons.forEach((btn) => { + btn.addEventListener("click", () => setHubPanel(btn.dataset.totogaHub)); + }); + + const reader = document.getElementById("totoga2-reader"); + if (!reader) return; + + const chapters = Array.from(reader.querySelectorAll(".chronicle-chapter")); + const modeButtons = Array.from(document.querySelectorAll("[data-totoga-reader-mode]")); + const pager = document.getElementById("totoga2-pager"); + const prevBtn = document.getElementById("totoga2-prev"); + const nextBtn = document.getElementById("totoga2-next"); + const indicator = document.getElementById("totoga2-chapter-indicator"); + if (!pager || !prevBtn || !nextBtn || !indicator) return; + + let currentIndex = 0; + + function updatePagedView() { + chapters.forEach((chapter, index) => { + chapter.style.display = index === currentIndex ? "" : "none"; + chapter.classList.toggle("active", index === currentIndex); + }); + indicator.textContent = `${currentIndex + 1} / ${chapters.length}`; + prevBtn.disabled = currentIndex === 0; + nextBtn.disabled = currentIndex === chapters.length - 1; + } + + function setReaderMode(mode) { + reader.dataset.mode = mode; + modeButtons.forEach((btn) => btn.classList.toggle("active", btn.dataset.totogaReaderMode === mode)); + if (mode === "paged") { + pager.hidden = false; + updatePagedView(); + } else { + pager.hidden = true; + chapters.forEach((chapter) => { + chapter.style.display = ""; + chapter.classList.remove("active"); + }); + } + } + + modeButtons.forEach((button) => { + button.addEventListener("click", () => setReaderMode(button.dataset.totogaReaderMode)); + }); + + prevBtn.addEventListener("click", () => { + if (currentIndex > 0) { + currentIndex -= 1; + updatePagedView(); + } + }); + + nextBtn.addEventListener("click", () => { + if (currentIndex < chapters.length - 1) { + currentIndex += 1; + updatePagedView(); + } + }); + + const initialHub = + hubButtons.find((b) => b.classList.contains("active"))?.dataset.totogaHub || + hubButtons[0]?.dataset.totogaHub || + "video"; + setHubPanel(initialHub); + setReaderMode("scroll"); + + const hash = (location.hash || "").slice(1); + if (hash && document.getElementById(hash)) { + setHubPanel("reader"); + setReaderMode("scroll"); + pager.hidden = true; + requestAnimationFrame(() => { + document.getElementById(hash)?.scrollIntoView({ behavior: "smooth", block: "start" }); + }); + } +})();