style 調整版面

This commit is contained in:
2026-05-16 00:05:20 +08:00
parent 12fa333a02
commit fb6400b620
7 changed files with 68 additions and 134 deletions
+4 -27
View File
@@ -1,30 +1,10 @@
body { body.concert-page {
background-color: var(--); background-color: var(--deep-black, #0a0a0a);
}
.concert-page {
background-color: var(--deep-black);
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
.concert-archive-header { /* 頂部 banner 版面見 style.css .concert-archive-header(與 .map-archive-header 共用) */
width: 100%;
height: 100vh;
min-height: 100dvh;
background-image: url('../images/header.jpg');
background-position: center center;
background-repeat: no-repeat;
background-size: 108%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
padding: 0 20px;
overflow: hidden;
position: relative;
}
.main-title { .main-title {
font-size: 3.5rem; font-size: 3.5rem;
@@ -60,10 +40,7 @@ body {
margin: 0 25px; margin: 0 25px;
} }
body { .concert-page .concert-container {
background-color: #fcfaf2;
/* 溫潤米白背景 */
margin: 0;
padding: 50px 0; padding: 50px 0;
font-family: "PingFang TC", "Microsoft JhengHei", sans-serif; font-family: "PingFang TC", "Microsoft JhengHei", sans-serif;
} }
+50 -71
View File
@@ -44,7 +44,8 @@ body {
line-height: 1.6; line-height: 1.6;
} }
header { /* 首頁 Hero 全屏;內頁 banner 見 .map-archive-header.concert-archive-header */
header#origin {
width: 100%; width: 100%;
height: 100vh; height: 100vh;
min-height: 100dvh; min-height: 100dvh;
@@ -102,23 +103,43 @@ nav a {
.portal-nav li { .portal-nav li {
position: relative; position: relative;
}
/* 主欄每項同高墊腳(含無子選單的「完整的六顆」),避免僅 :has 子選單者才墊高而單項偏低 */
.portal-nav>ul>li {
padding-bottom: 8px; padding-bottom: 8px;
} }
.portal-nav .logo {
align-self: center;
flex-shrink: 0;
transform: translateY(3px);
}
/* 全站頂欄:對齊 concert.html — 全寬黑底、黏頂、較高層(site-guide 僅連結開放邏輯不同,見 portal-nav.js */
.portal-nav { .portal-nav {
position: relative; width: 100%;
z-index: 60; margin: 0 0 14px;
padding: 0.8rem 100px;
background-color: var(--black);
border-radius: 0;
box-shadow: none;
overflow: visible;
position: sticky;
top: 0;
z-index: 100;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
align-items: flex-end; align-items: center;
justify-content: space-between; justify-content: space-between;
gap: 0.5rem 1rem; gap: 0.5rem 1rem;
box-sizing: border-box;
} }
.portal-nav>ul { .portal-nav>ul {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
align-items: flex-end; align-items: center;
justify-content: flex-end; justify-content: flex-end;
gap: clamp(8px, 1.4vw, 18px); gap: clamp(8px, 1.4vw, 18px);
list-style: none; list-style: none;
@@ -130,7 +151,7 @@ nav a {
.portal-nav>ul>li:hover, .portal-nav>ul>li:hover,
.portal-nav>ul>li:focus-within { .portal-nav>ul>li:focus-within {
z-index: 70; z-index: 105;
} }
.portal-nav>ul>li>a { .portal-nav>ul>li>a {
@@ -467,8 +488,8 @@ a.btn[data-coming-soon="true"],
pointer-events: none; pointer-events: none;
} }
header, header:not(.map-archive-header):not(.concert-archive-header),
nav, nav:not(.portal-nav),
.container, .container,
footer { footer {
position: relative; position: relative;
@@ -1342,9 +1363,7 @@ footer a .mark_b {
color: var(--primary); color: var(--primary);
} }
/* map.html */ /* map.html — 主內容層;頂欄見全站 .portal-nav */
.map-page .map-archive-header,
.map-page .portal-nav,
.map-page .member-tabs, .map-page .member-tabs,
.map-page #itinerary-search, .map-page #itinerary-search,
.map-page .map-layout, .map-page .map-layout,
@@ -1353,7 +1372,6 @@ footer a .mark_b {
z-index: 1; z-index: 1;
} }
.concert-page .concert-archive-header,
.concert-page .search-section, .concert-page .search-section,
.concert-page .concert-container, .concert-page .concert-container,
.concert-page footer { .concert-page footer {
@@ -1361,38 +1379,6 @@ footer a .mark_b {
z-index: 1; z-index: 1;
} }
/* 演唱會頁:勿與主內容同層 z-index:1(會被後方 DOM 蓋住);對齊 map-page 黏頂+較高層 */
.concert-page .portal-nav {
width: 100%;
margin: 0 0 14px;
padding: 0.8rem 100px;
background-color: var(--black);
border-radius: 0;
box-shadow: none;
overflow: visible;
position: sticky;
top: 0;
z-index: 100;
}
.concert-page .portal-nav>ul>li:hover,
.concert-page .portal-nav>ul>li:focus-within {
z-index: 105;
}
.map-page .portal-nav {
width: 100%;
margin: 0 0 14px;
padding: 0.8rem 100px;
background-color: var(--black);
border-radius: 0;
box-shadow: none;
overflow: visible;
position: sticky;
top: 0;
z-index: 30;
}
.map-page .portal-nav ul { .map-page .portal-nav ul {
list-style: none; list-style: none;
margin: 0; margin: 0;
@@ -1414,11 +1400,6 @@ footer a .mark_b {
line-height: 1; line-height: 1;
} }
.map-page .portal-nav>ul>li:hover,
.map-page .portal-nav>ul>li:focus-within {
z-index: 35;
}
.map-page .portal-nav>ul>li>a { .map-page .portal-nav>ul>li>a {
display: inline-flex; display: inline-flex;
flex-direction: column; flex-direction: column;
@@ -1562,14 +1543,16 @@ footer a .mark_b {
transform: translateY(-50%); transform: translateY(-50%);
} }
.map-archive-header { /* 內頁頂部 banner:全屏 100vh(首頁 Hero 僅 header#origin */
.map-archive-header,
.concert-archive-header {
width: 100%; width: 100%;
height: 100vh; height: 100vh;
min-height: 100dvh; min-height: 100dvh;
background-image: url('../images/header.jpg'); background-image: url('../images/header.jpg');
background-position: center center; background-position: center 78%;
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 108%; background-size: cover;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
@@ -1578,9 +1561,11 @@ footer a .mark_b {
padding: 0 20px; padding: 0 20px;
overflow: hidden; overflow: hidden;
position: relative; position: relative;
box-sizing: border-box;
} }
.map-archive-header .main-title { .map-archive-header .main-title,
.concert-archive-header .main-title {
font-size: clamp(2rem, 4.5vw, 3.2rem); font-size: clamp(2rem, 4.5vw, 3.2rem);
font-weight: 900; font-weight: 900;
color: var(--yellow, var(--primary)); color: var(--yellow, var(--primary));
@@ -1590,18 +1575,22 @@ footer a .mark_b {
text-shadow: 0 0 30px rgba(255, 221, 0, 0.75); text-shadow: 0 0 30px rgba(255, 221, 0, 0.75);
} }
.map-archive-header .subtitle-wrap { .map-archive-header .subtitle-wrap,
.concert-archive-header .subtitle-wrap {
margin-top: 20px; margin-top: 20px;
} }
.map-archive-header .subtitle-wrap::before, .map-archive-header .subtitle-wrap::before,
.map-archive-header .subtitle-wrap::after { .map-archive-header .subtitle-wrap::after,
.concert-archive-header .subtitle-wrap::before,
.concert-archive-header .subtitle-wrap::after {
height: 3px; height: 3px;
background-color: #ffcc00; background-color: #ffcc00;
max-width: 56px; max-width: 56px;
} }
.map-archive-header .sub-title { .map-archive-header .sub-title,
.concert-archive-header .sub-title {
font-size: 0.92rem; font-size: 0.92rem;
letter-spacing: 4px; letter-spacing: 4px;
color: #d4d4d4; color: #d4d4d4;
@@ -1909,12 +1898,8 @@ footer a .mark_b {
} }
@media (max-width: 920px) { @media (max-width: 920px) {
.map-archive-header { .map-archive-header .main-title,
background-size: cover; .concert-archive-header .main-title {
padding: 0 16px;
}
.map-archive-header .main-title {
letter-spacing: 4px; letter-spacing: 4px;
} }
@@ -1927,8 +1912,9 @@ footer a .mark_b {
gap: 16px; gap: 16px;
} }
.map-page .portal-nav { .portal-nav {
padding: 0.8rem 16px; padding-top: 0.8rem;
padding-bottom: 0.8rem;
} }
.map-page .portal-nav .portal-submenu { .map-page .portal-nav .portal-submenu {
@@ -2310,13 +2296,6 @@ body.totoga2-page .totoga2-hub-controls {
flex-wrap: wrap; flex-wrap: wrap;
} }
body.totoga2-page .map-archive-header {
height: auto;
min-height: clamp(15rem, 42vh, 26rem);
padding: clamp(2rem, 5vh, 3.25rem) 20px;
background-size: cover;
}
body.totoga2-page.totoga2-video-copy-page .ebook-intro.section { body.totoga2-page.totoga2-video-copy-page .ebook-intro.section {
margin-bottom: 1.5rem; margin-bottom: 1.5rem;
} }
+9 -6
View File
@@ -2,22 +2,25 @@
@media (max-width: 1180px) { @media (max-width: 1180px) {
html:has(body.map-page) { html:has(.portal-nav) {
scroll-padding-top: clamp(52px, 12vw, 76px); scroll-padding-top: clamp(52px, 12vw, 76px);
} }
nav, nav:not(.portal-nav) {
padding-left: clamp(14px, 2vw + 10px, 32px) !important;
padding-right: clamp(14px, 2vw + 10px, 32px) !important;
}
.portal-nav { .portal-nav {
padding-left: clamp(14px, 2vw + 10px, 32px) !important; padding-left: clamp(14px, 2vw + 10px, 32px) !important;
padding-right: clamp(14px, 2vw + 10px, 32px) !important; padding-right: clamp(14px, 2vw + 10px, 32px) !important;
row-gap: 12px; row-gap: 12px;
flex-wrap: wrap; flex-wrap: wrap;
align-items: flex-start; align-items: center;
} }
.map-page .portal-nav { .portal-nav>ul {
padding-left: clamp(14px, 2vw + 10px, 32px) !important; align-items: center;
padding-right: clamp(14px, 2vw + 10px, 32px) !important;
} }
.portal-nav .logo { .portal-nav .logo {
+1 -2
View File
@@ -46,7 +46,7 @@
/** /**
* 首頁僅下列錨點可點其餘 #story維持籌備中須站主同意後才可加入 * 首頁僅下列錨點可點其餘 #story維持籌備中須站主同意後才可加入
* 空字串連到 index.html 且無 # 片段時視為可點淪陷瞬間 · 初心與軌跡 * 空字串連到 index.html 且無 # 片段時視為可點淪陷瞬間主項
*/ */
const INDEX_NAV_OPEN_HASHES = new Set(["", "#origin", "#start", "#mission", "#timeline"]); const INDEX_NAV_OPEN_HASHES = new Set(["", "#origin", "#start", "#mission", "#timeline"]);
@@ -215,7 +215,6 @@
<ul> <ul>
<li><a target="_blank" rel="noopener noreferrer" href="${rp}index.html"><span class="portal-nav__label">淪陷瞬間</span></a> <li><a target="_blank" rel="noopener noreferrer" href="${rp}index.html"><span class="portal-nav__label">淪陷瞬間</span></a>
<ul class="portal-submenu"> <ul class="portal-submenu">
<li><a target="_blank" rel="noopener noreferrer" href="${rp}index.html"><span class="portal-nav__label">初心與軌跡</span></a></li>
<li class="portal-nav__subgroup"> <li class="portal-nav__subgroup">
<span class="portal-nav__subgroup-head"><span class="portal-nav__label">傳奇的轉折六六歌2</span></span> <span class="portal-nav__subgroup-head"><span class="portal-nav__label">傳奇的轉折六六歌2</span></span>
<ul class="portal-submenu-nested" aria-label="傳奇的轉折(六六歌2"> <ul class="portal-submenu-nested" aria-label="傳奇的轉折(六六歌2">
+1 -1
View File
@@ -13,7 +13,7 @@
<body class="concert-page"> <body class="concert-page">
<!-- HTML 結構 --> <!-- HTML 結構 -->
<header class="concert-archive-header"> <header class="map-archive-header">
<div class="header-inner"> <div class="header-inner">
<h1 class="main-title">巡迴演唱會列表</h1> <h1 class="main-title">巡迴演唱會列表</h1>
<div class="subtitle-wrap"> <div class="subtitle-wrap">
-7
View File
@@ -110,13 +110,6 @@
<td class="site-guide-nav-link-cell"><a href="../index.html"><code>index.html</code></a> <td class="site-guide-nav-link-cell"><a href="../index.html"><code>index.html</code></a>
</td> </td>
</tr> </tr>
<tr data-site-guide-depth="2">
<td class="site-guide-nav-menu-cell"><span class="site-guide-nav-name"><a
href="../index.html">初心與軌跡</a></span></td>
<td class="site-guide-nav-desc">Hero、入坑敘事與站方初衷;LOGO 理念、宣言與跨時空軌跡時間軸。</td>
<td class="site-guide-nav-link-cell"><a href="../index.html"><code>index.html</code></a>
</td>
</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
class="site-guide-nav-nolink">傳奇的轉折(六六歌2</span></span></td> class="site-guide-nav-nolink">傳奇的轉折(六六歌2</span></span></td>
+3 -20
View File
@@ -144,29 +144,12 @@
<article class="story-node" data-era="2016.05"> <article class="story-node" data-era="2016.05">
<h3>從路人到鐵粉:從夢境進現實</h3> <h3>從路人到鐵粉:從夢境進現實</h3>
<p>《無限挑戰》落幕後,原以為這只是最後一場華麗的告別。在那段連期待都不敢奢侈、只在螢幕前渴求消息的時光裡,5 月 11 <p>《無限挑戰》的燈光熄滅,原以為那場重逢只是曇花一現。當我們陷入瘋狂但卻不敢過度期待合體、只在螢幕前等待每個oppa消息的時光,終於盼到了 5月 11
日的簽約消息,所有從絕望中打醒。從未知的空虛到塵埃落定的感動——原來這不是終點,奇蹟真的在現實生了根。</p> 與 YG的簽約消息,所有新舊小黃從絕望中打醒。從未知的空虛到塵埃落定的感動——原來這不是終點,奇蹟真的在現實生了根。</p>
<p>四月的重逢是老黃們守候十六年的淚水;而九月的單獨演唱會,則讓無數新小黃見證了那份無法動搖的羈絆。在那片黃色海洋裡,我們不只愛上了水晶男孩,更愛上了他們與小黃之間的愛情。雖然遺憾沒能親眼看見六人並肩的畫面,但那股新舊交織的生命力,確實為水晶注入了新的靈魂。 <p>四月的重逢是老黃們守候十六年的淚水;而九月的單獨演唱會,則讓無數新小黃見證了那份無法動搖的羈絆。在那片黃色海洋裡,我們不只愛上了水晶男孩,更愛上了他們與小黃之間的愛情。雖然遺憾沒能親眼看見六人並肩的畫面,但那股新舊交織的生命力,確實為水晶注入了新的靈魂。
</p> </p>
<p>而志溶雖然未參與合體,卻在十二月聖誕夜那場釜山演唱會落幕當天,帶著孩子在《超人回來了》的預告驚喜現身。這不是告別,而是他選擇以另一種最真實、最溫馨的形式,在現實生活中繼續陪伴著大家。舞台上的空位雖然令人難過,但看到他帶著孩子幸福的模樣,我們才明白:原來水晶與粉絲的羈絆,早已超越了表演的定義,而是要在彼此的生活裡,一起寫下新的篇章。
<p>這份陪伴在十二月有了溫柔的延續。志溶雖然未回歸舞台,卻在《超回》中以最真實、幸福的模樣走入大家的生活。舞台上的空位雖讓心底隱隱作痛,但看著他幸福的樣子,我們才明白:原來大家只是換個方式一起變老,這份情誼早已超越了表演。
</p>
</article>
<article class="story-node" data-era="2016">
<h3>從路人到鐵粉:從夢境進現實</h3>
<p>當《無限挑戰》的燈光熄滅,原本以為這場跨越十六年的重逢僅是曇花一現的夢境,但隨後五位成員與 YG
簽約的消息,正式宣告了傳奇的歸來。九月演唱會上,新舊粉絲在黃色海洋中見證了跨越時空的強烈羈絆,那種心意相通的悸動,讓我們知道這道光從未真正熄滅過。</p>
<p>而志溶雖然未參與合體,卻在十二月演唱會落幕當天,透過《超人回來了》的預告驚喜現身。這不是告別,而是他選擇以另一種最真實、最溫馨的形式,在現實生活中繼續陪伴著大家。舞台上的空位雖然令人難過,但看到他帶著孩子幸福的模樣,我們才明白:原來水晶與粉絲的羈絆,早已超越了表演的定義,而是要在彼此的生活裡,一起變老,一起寫下新的篇章。
</p>
### 餘溫與新生:從奇蹟走向恆久
<p>當《無限挑戰》的燈光熄滅,原以為那場重逢只是十六年一次的曇花一現。同年五月,五位成員與 YG
簽約的消息,讓夢境落實成了現實。四月的「六六歌」是屬於老粉絲守候十六年的淚水與重逢;而九月的個人演唱會,則是一場關於愛情的傳承。無數新粉絲透過黃色海洋,目睹了偶像與歌迷間那種超越時空的生死契闊,雖然志溶未能站上舞台成了這場盛宴唯一的遺憾,但那種「水晶男孩」與「黃飯」共生的生命力,卻從那一刻起,重新注入了新的靈魂。
</p>
<p>這份羈絆在十二月有了更溫柔的延續。演唱會落幕當晚,志溶帶著孩子在《超人回來了》預告中驚喜現身。這不是告別,而是他換了一種最真實的形式,在現實生活中守護著這份情誼。舞台上的空位雖讓心底隱隱作痛,但看著他幸福的模樣,我們才懂得:水晶男孩的定義早已超越了表演,而是彼此約好在不同的時空裡,也要一起變老,一起寫下永不終結的篇章。
</p> </p>
</article> </article>
<article class="story-node" data-era="2019"> <article class="story-node" data-era="2019">