mirror of
https://github.com/hicccc77/WeFlow.git
synced 2026-04-22 07:26:46 +00:00
Compare commits
1 Commits
dev
...
dependabot
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fe02ff0d84 |
8
package-lock.json
generated
8
package-lock.json
generated
@@ -20,7 +20,7 @@
|
|||||||
"jieba-wasm": "^2.2.0",
|
"jieba-wasm": "^2.2.0",
|
||||||
"jszip": "^3.10.1",
|
"jszip": "^3.10.1",
|
||||||
"koffi": "^2.9.0",
|
"koffi": "^2.9.0",
|
||||||
"lucide-react": "^1.7.0",
|
"lucide-react": "^1.8.0",
|
||||||
"react": "^19.2.3",
|
"react": "^19.2.3",
|
||||||
"react-dom": "^19.2.3",
|
"react-dom": "^19.2.3",
|
||||||
"react-markdown": "^10.1.0",
|
"react-markdown": "^10.1.0",
|
||||||
@@ -6737,9 +6737,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lucide-react": {
|
"node_modules/lucide-react": {
|
||||||
"version": "1.7.0",
|
"version": "1.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.8.0.tgz",
|
||||||
"integrity": "sha512-yI7BeItCLZJTXikmK4KNUGCKoGzSvbKlfCvw44bU4fXAL6v3gYS4uHD1jzsLkfwODYwI6Drw5Tu9Z5ulDe0TSg==",
|
"integrity": "sha512-WuvlsjngSk7TnTBJ1hsCy3ql9V9VOdcPkd3PKcSmM34vJD8KG6molxz7m7zbYFgICwsanQWmJ13JlYs4Zp7Arw==",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
"react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
"jieba-wasm": "^2.2.0",
|
"jieba-wasm": "^2.2.0",
|
||||||
"jszip": "^3.10.1",
|
"jszip": "^3.10.1",
|
||||||
"koffi": "^2.9.0",
|
"koffi": "^2.9.0",
|
||||||
"lucide-react": "^1.7.0",
|
"lucide-react": "^1.8.0",
|
||||||
"react": "^19.2.3",
|
"react": "^19.2.3",
|
||||||
"react-dom": "^19.2.3",
|
"react-dom": "^19.2.3",
|
||||||
"react-markdown": "^10.1.0",
|
"react-markdown": "^10.1.0",
|
||||||
|
|||||||
12
src/App.tsx
12
src/App.tsx
@@ -81,7 +81,6 @@ function App() {
|
|||||||
const isStandaloneChatWindow = location.pathname === '/chat-window'
|
const isStandaloneChatWindow = location.pathname === '/chat-window'
|
||||||
const isNotificationWindow = location.pathname === '/notification-window'
|
const isNotificationWindow = location.pathname === '/notification-window'
|
||||||
const isAnnualReportWindow = location.pathname === '/annual-report/view'
|
const isAnnualReportWindow = location.pathname === '/annual-report/view'
|
||||||
const isDualReportWindow = location.pathname === '/dual-report/view'
|
|
||||||
const isSettingsRoute = location.pathname === '/settings'
|
const isSettingsRoute = location.pathname === '/settings'
|
||||||
const settingsRouteState = location.state as { backgroundLocation?: Location; initialTab?: unknown } | null
|
const settingsRouteState = location.state as { backgroundLocation?: Location; initialTab?: unknown } | null
|
||||||
const routeLocation = isSettingsRoute
|
const routeLocation = isSettingsRoute
|
||||||
@@ -129,7 +128,7 @@ function App() {
|
|||||||
const body = document.body
|
const body = document.body
|
||||||
const appRoot = document.getElementById('app')
|
const appRoot = document.getElementById('app')
|
||||||
|
|
||||||
if (isOnboardingWindow || isNotificationWindow || isAnnualReportWindow || isDualReportWindow) {
|
if (isOnboardingWindow || isNotificationWindow || isAnnualReportWindow) {
|
||||||
root.style.background = 'transparent'
|
root.style.background = 'transparent'
|
||||||
body.style.background = 'transparent'
|
body.style.background = 'transparent'
|
||||||
body.style.overflow = 'hidden'
|
body.style.overflow = 'hidden'
|
||||||
@@ -146,7 +145,7 @@ function App() {
|
|||||||
appRoot.style.overflow = ''
|
appRoot.style.overflow = ''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, [isOnboardingWindow, isNotificationWindow, isAnnualReportWindow, isDualReportWindow])
|
}, [isOnboardingWindow, isNotificationWindow, isAnnualReportWindow])
|
||||||
|
|
||||||
// 应用主题
|
// 应用主题
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -167,7 +166,7 @@ function App() {
|
|||||||
}
|
}
|
||||||
mq.addEventListener('change', handler)
|
mq.addEventListener('change', handler)
|
||||||
return () => mq.removeEventListener('change', handler)
|
return () => mq.removeEventListener('change', handler)
|
||||||
}, [currentTheme, themeMode, isOnboardingWindow, isNotificationWindow, isAnnualReportWindow, isDualReportWindow])
|
}, [currentTheme, themeMode, isOnboardingWindow, isNotificationWindow, isAnnualReportWindow])
|
||||||
|
|
||||||
// 读取已保存的主题设置
|
// 读取已保存的主题设置
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -518,11 +517,6 @@ function App() {
|
|||||||
return <AnnualReportWindow />
|
return <AnnualReportWindow />
|
||||||
}
|
}
|
||||||
|
|
||||||
// 独立双人报告全屏窗口
|
|
||||||
if (isDualReportWindow) {
|
|
||||||
return <DualReportWindow />
|
|
||||||
}
|
|
||||||
|
|
||||||
// 主窗口 - 完整布局
|
// 主窗口 - 完整布局
|
||||||
const handleCloseSettings = () => {
|
const handleCloseSettings = () => {
|
||||||
const backgroundLocation = settingsRouteState?.backgroundLocation ?? settingsBackgroundRef.current
|
const backgroundLocation = settingsRouteState?.backgroundLocation ?? settingsBackgroundRef.current
|
||||||
|
|||||||
@@ -299,12 +299,6 @@
|
|||||||
opacity: 0.05;
|
opacity: 0.05;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
filter: blur(80px);
|
filter: blur(80px);
|
||||||
animation: coreBreathing 6s ease-in-out infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes coreBreathing {
|
|
||||||
0%, 100% { opacity: 0.03; transform: translate(-50%, -50%) scale(0.95); }
|
|
||||||
50% { opacity: 0.06; transform: translate(-50%, -50%) scale(1.05); }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* S9: LEXICON (大气) */
|
/* S9: LEXICON (大气) */
|
||||||
@@ -649,160 +643,199 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#scene-8 {
|
#scene-8 {
|
||||||
align-items: center;
|
align-items: flex-start;
|
||||||
justify-content: center;
|
justify-content: flex-start;
|
||||||
padding: 0;
|
padding: 0 6vw;
|
||||||
overflow: hidden;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* V2 Background: Cinematic Aura */
|
#scene-8 .s8-layout {
|
||||||
#scene-8 .s8-bg-layer {
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
inset: -10%;
|
top: 18vh;
|
||||||
z-index: 1;
|
left: 50%;
|
||||||
opacity: 0;
|
transform: translateX(-50%);
|
||||||
transition: opacity 2s 0.2s var(--ease-out);
|
width: min(1240px, 86vw);
|
||||||
filter: blur(120px) contrast(1.1) brightness(0.6);
|
|
||||||
pointer-events: none;
|
|
||||||
|
|
||||||
.bg-avatar {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
object-fit: cover;
|
|
||||||
transform: scale(1.2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.scene.active #scene-8 .s8-bg-layer {
|
|
||||||
opacity: 0.18;
|
|
||||||
}
|
|
||||||
|
|
||||||
#scene-8 .s8-floating-layout {
|
|
||||||
position: relative;
|
|
||||||
width: 100vw;
|
|
||||||
height: 100vh;
|
|
||||||
z-index: 2;
|
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(12, 1fr);
|
grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
|
||||||
grid-template-rows: repeat(12, 1fr);
|
column-gap: clamp(34px, 4.8vw, 84px);
|
||||||
padding: 10vh 8vw;
|
align-items: start;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The Central Pivot: Name & Meta */
|
#scene-8 .s8-left {
|
||||||
#scene-8 .s8-hero-unit {
|
|
||||||
grid-column: 2 / 8;
|
|
||||||
grid-row: 4 / 7;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: center;
|
gap: clamp(2.5vh, 3.2vh, 4vh);
|
||||||
|
padding-top: clamp(8vh, 9vh, 11vh);
|
||||||
|
}
|
||||||
|
|
||||||
.s8-name {
|
#scene-8 .s8-name-wrap,
|
||||||
font-size: clamp(4.5rem, 10vw, 8.5rem);
|
#scene-8 .s8-summary-wrap,
|
||||||
font-weight: 700;
|
#scene-8 .s8-quote-wrap,
|
||||||
color: var(--c-text-bright);
|
#scene-8 .s8-letter-wrap {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#scene-8 .s8-name {
|
||||||
|
font-size: clamp(3.2rem, 7.4vw, 5.6rem);
|
||||||
|
color: rgba(var(--c-gold-rgb), 0.88);
|
||||||
letter-spacing: 0.08em;
|
letter-spacing: 0.08em;
|
||||||
line-height: 1;
|
line-height: 1.05;
|
||||||
margin-bottom: 2vh;
|
|
||||||
background: linear-gradient(135deg, var(--c-gold-strong), var(--c-text-bright), var(--c-gold-strong));
|
|
||||||
background-size: 200% auto;
|
|
||||||
-webkit-background-clip: text;
|
|
||||||
-webkit-text-fill-color: transparent;
|
|
||||||
animation: shine 8s linear infinite;
|
|
||||||
text-shadow: 0 0 40px rgba(var(--c-gold-rgb), 0.2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.s8-meta {
|
#scene-8 .s8-summary {
|
||||||
font-family: 'SpaceMonoLocal';
|
max-width: 34ch;
|
||||||
font-size: clamp(0.7rem, 0.85vw, 0.9rem);
|
font-size: clamp(1.06rem, 1.35vw, 1.35rem);
|
||||||
color: var(--c-gold-strong);
|
|
||||||
letter-spacing: 0.4em;
|
|
||||||
text-transform: uppercase;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 1.5vw;
|
|
||||||
|
|
||||||
&::after {
|
|
||||||
content: '';
|
|
||||||
flex: 1;
|
|
||||||
height: 1px;
|
|
||||||
background: linear-gradient(to right, rgba(var(--c-gold-rgb), 0.6), transparent);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fragmented Storytelling */
|
|
||||||
#scene-8 .s8-fragments {
|
|
||||||
position: absolute;
|
|
||||||
inset: 0;
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#scene-8 .fragment {
|
|
||||||
position: absolute;
|
|
||||||
max-width: 24ch;
|
|
||||||
font-size: clamp(0.95rem, 1.1vw, 1.15rem);
|
|
||||||
line-height: 2.1;
|
|
||||||
color: var(--c-text-muted);
|
|
||||||
font-weight: 300;
|
|
||||||
|
|
||||||
&.f1 {
|
|
||||||
top: 25vh;
|
|
||||||
right: 12vw;
|
|
||||||
text-align: right;
|
|
||||||
color: var(--c-text-soft);
|
color: var(--c-text-soft);
|
||||||
font-style: italic;
|
line-height: 1.95;
|
||||||
|
letter-spacing: 0.02em;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.f2 {
|
#scene-8 .s8-summary-count {
|
||||||
bottom: 20vh;
|
margin: 0 8px;
|
||||||
left: 15vw;
|
font-size: clamp(1.35rem, 2vw, 1.75rem);
|
||||||
max-width: 38ch;
|
color: var(--c-gold-strong);
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.f3 {
|
#scene-8 .s8-quote {
|
||||||
bottom: 12vh;
|
max-width: 32ch;
|
||||||
right: 10vw;
|
font-size: clamp(0.98rem, 1.12vw, 1.1rem);
|
||||||
text-align: right;
|
color: var(--c-text-muted);
|
||||||
opacity: 0.6;
|
line-height: 1.9;
|
||||||
font-size: 0.85rem;
|
|
||||||
letter-spacing: 0.05em;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes shine {
|
#scene-8 .s8-letter-wrap {
|
||||||
to { background-position: 200% center; }
|
margin-top: clamp(3vh, 4vh, 5.5vh);
|
||||||
|
}
|
||||||
|
|
||||||
|
#scene-8 .s8-letter {
|
||||||
|
position: relative;
|
||||||
|
padding: clamp(24px, 3.2vh, 38px) clamp(20px, 2.6vw, 34px) clamp(24px, 3.2vh, 38px) clamp(30px, 3.2vw, 44px);
|
||||||
|
border-radius: 18px;
|
||||||
|
border: 1px solid rgba(var(--c-gold-rgb), 0.34);
|
||||||
|
background: linear-gradient(135deg, rgba(var(--c-gold-rgb), 0.16), rgba(var(--c-gold-rgb), 0.04));
|
||||||
|
font-size: clamp(0.95rem, 1.05vw, 1.08rem);
|
||||||
|
line-height: 2;
|
||||||
|
color: var(--c-text-soft);
|
||||||
|
text-align: left;
|
||||||
|
text-shadow: 0 4px 16px rgba(0, 0, 0, 0.22);
|
||||||
|
}
|
||||||
|
|
||||||
|
#scene-8 .s8-letter::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 20px;
|
||||||
|
left: 14px;
|
||||||
|
width: 2px;
|
||||||
|
height: calc(100% - 40px);
|
||||||
|
border-radius: 2px;
|
||||||
|
background: linear-gradient(to bottom, rgba(var(--c-gold-rgb), 0.7), rgba(var(--c-gold-rgb), 0.08));
|
||||||
}
|
}
|
||||||
|
|
||||||
#scene-8 .s8-empty-wrap {
|
#scene-8 .s8-empty-wrap {
|
||||||
grid-column: 4 / 10;
|
display: block;
|
||||||
grid-row: 5 / 8;
|
width: min(760px, 78vw);
|
||||||
|
margin-top: 24vh;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
.s8-empty-text {
|
}
|
||||||
font-size: 1.6rem;
|
|
||||||
line-height: 2.5;
|
#scene-8 .s8-empty-text {
|
||||||
color: var(--c-text-soft);
|
color: var(--c-text);
|
||||||
font-weight: 200;
|
line-height: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1280px) {
|
||||||
|
#scene-8 .s8-layout {
|
||||||
|
width: min(1120px, 88vw);
|
||||||
|
grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
|
||||||
|
column-gap: clamp(28px, 4vw, 56px);
|
||||||
|
}
|
||||||
|
|
||||||
|
#scene-8 .s8-left {
|
||||||
|
padding-top: clamp(6vh, 8vh, 9vh);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 1024px) {
|
@media (max-width: 1024px) {
|
||||||
#scene-8 .s8-hero-unit {
|
#scene-8 .s8-layout {
|
||||||
grid-column: 2 / 12;
|
top: 16vh;
|
||||||
grid-row: 2 / 5;
|
width: min(900px, 90vw);
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
row-gap: clamp(3vh, 3.5vh, 4.5vh);
|
||||||
}
|
}
|
||||||
#scene-8 .fragment {
|
|
||||||
position: relative;
|
#scene-8 .s8-left {
|
||||||
inset: auto !important;
|
padding-top: 0;
|
||||||
max-width: 100%;
|
gap: clamp(1.6vh, 2.2vh, 2.8vh);
|
||||||
text-align: left !important;
|
|
||||||
margin-top: 4vh;
|
|
||||||
}
|
}
|
||||||
#scene-8 .s8-fragments {
|
|
||||||
position: relative;
|
#scene-8 .s8-name {
|
||||||
grid-column: 2 / 12;
|
font-size: clamp(2.4rem, 8.4vw, 4.2rem);
|
||||||
grid-row: 6 / 12;
|
letter-spacing: 0.06em;
|
||||||
display: flex;
|
}
|
||||||
flex-direction: column;
|
|
||||||
|
#scene-8 .s8-summary,
|
||||||
|
#scene-8 .s8-quote {
|
||||||
|
max-width: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#scene-8 .s8-letter-wrap {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#scene-8 .s8-letter {
|
||||||
|
font-size: clamp(0.9rem, 1.9vw, 1rem);
|
||||||
|
line-height: 1.95;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 760px) {
|
||||||
|
#scene-8 .s8-layout {
|
||||||
|
top: 14.5vh;
|
||||||
|
width: 92vw;
|
||||||
|
row-gap: clamp(2.2vh, 3vh, 3.8vh);
|
||||||
|
}
|
||||||
|
|
||||||
|
#scene-8 .s8-name {
|
||||||
|
font-size: clamp(2rem, 10vw, 3rem);
|
||||||
|
}
|
||||||
|
|
||||||
|
#scene-8 .s8-summary {
|
||||||
|
font-size: clamp(0.92rem, 3.9vw, 1rem);
|
||||||
|
line-height: 1.85;
|
||||||
|
}
|
||||||
|
|
||||||
|
#scene-8 .s8-summary-count {
|
||||||
|
margin: 0 6px;
|
||||||
|
font-size: clamp(1.1rem, 4.8vw, 1.35rem);
|
||||||
|
}
|
||||||
|
|
||||||
|
#scene-8 .s8-quote {
|
||||||
|
font-size: clamp(0.86rem, 3.5vw, 0.95rem);
|
||||||
|
line-height: 1.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
#scene-8 .s8-letter {
|
||||||
|
border-radius: 14px;
|
||||||
|
padding: 16px 16px 16px 24px;
|
||||||
|
font-size: clamp(0.82rem, 3.4vw, 0.9rem);
|
||||||
|
line-height: 1.82;
|
||||||
|
}
|
||||||
|
|
||||||
|
#scene-8 .s8-letter::before {
|
||||||
|
top: 16px;
|
||||||
|
left: 11px;
|
||||||
|
height: calc(100% - 32px);
|
||||||
|
}
|
||||||
|
|
||||||
|
#scene-8 .s8-empty-wrap {
|
||||||
|
width: 88vw;
|
||||||
|
margin-top: 23vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
#scene-8 .s8-empty-text {
|
||||||
|
font-size: 1rem;
|
||||||
|
line-height: 1.9;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -872,69 +872,45 @@ function AnnualReportWindow() {
|
|||||||
<div className="reveal-wrap en-tag">
|
<div className="reveal-wrap en-tag">
|
||||||
<div className="reveal-inner serif scene0-cn-tag">曾经的好友</div>
|
<div className="reveal-inner serif scene0-cn-tag">曾经的好友</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{reportData.lostFriend && (
|
|
||||||
<div className="s8-bg-layer">
|
|
||||||
<img src={reportData.lostFriend.avatarUrl} alt="" className="bg-avatar" />
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
|
|
||||||
|
|
||||||
{reportData.lostFriend ? (
|
{reportData.lostFriend ? (
|
||||||
<div className="s8-floating-layout">
|
<div className="s8-layout">
|
||||||
<div className="s8-hero-unit">
|
<div className="s8-left">
|
||||||
<div className="reveal-wrap">
|
<div className="reveal-wrap s8-name-wrap">
|
||||||
<div className="reveal-inner s8-name delay-1">
|
<div className="reveal-inner serif delay-1 s8-name">
|
||||||
{reportData.lostFriend.displayName}
|
{reportData.lostFriend.displayName}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="reveal-wrap">
|
<div className="reveal-wrap s8-summary-wrap">
|
||||||
<div className="reveal-inner s8-meta delay-2">
|
<div className="reveal-inner serif delay-2 s8-summary">
|
||||||
{reportData.lostFriend.periodDesc} /
|
后来,你们的交集停留在{reportData.lostFriend.periodDesc}这短短的
|
||||||
<span className="num-display" style={{ margin: '0 10px', fontSize: '1.4em' }}>
|
<span className="num-display s8-summary-count">
|
||||||
<DecodeText value={reportData.lostFriend.lateCount.toLocaleString()} active={currentScene === 8} />
|
<DecodeText value={reportData.lostFriend.lateCount.toLocaleString()} active={currentScene === 8} />
|
||||||
</span>
|
</span>
|
||||||
MESSAGES
|
句话里。
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="reveal-wrap s8-quote-wrap">
|
||||||
|
<div className="reveal-inner serif delay-3 s8-quote">
|
||||||
|
“我一直相信我们能够再次相见,相信分别的日子总会迎来终结。”
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="reveal-wrap s8-letter-wrap">
|
||||||
<div className="s8-fragments">
|
<div className="reveal-inner serif delay-4 s8-letter">
|
||||||
<div className="reveal-wrap fragment f1">
|
所有的离散,或许都只是一场漫长的越冬。飞鸟要越过一万座雪山,才能带来春天的第一行回信;树木要褪去一万次枯叶,才能记住风的形状。如果时间注定要把我们推向不同的象限,那就在记忆的最深处建一座灯塔。哪怕要熬过几千个无法见面的黄昏,也要相信,总有一次日出的晨光,是为了照亮我们重逢的归途。
|
||||||
<div className="reveal-inner delay-3">
|
|
||||||
“我一直相信我们能够再次相见,<br />相信分别的日子总会迎来终结。”
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className="reveal-wrap fragment f2">
|
|
||||||
<div className="reveal-inner delay-4">
|
|
||||||
所有的离散,或许都只是一场漫长的越冬。<br />
|
|
||||||
飞鸟要越过一万座雪山,才能带来春天的第一行回信;<br />
|
|
||||||
树木要褪去一万次枯叶,才能记住风的形状。
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className="reveal-wrap fragment f3">
|
|
||||||
<div className="reveal-inner delay-5">
|
|
||||||
哪怕要熬过几千个无法见面的黄昏,也要相信,<br />
|
|
||||||
总有一次日出的晨光,是为了照亮我们重逢的归途。
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div className="s8-floating-layout">
|
<div className="reveal-wrap desc-text s8-empty-wrap">
|
||||||
<div className="reveal-wrap s8-empty-wrap">
|
<div className="reveal-inner serif delay-1 s8-empty-text">
|
||||||
<div className="reveal-inner serif s8-empty-text delay-1">
|
|
||||||
缘分温柔地眷顾着你。<br/>
|
缘分温柔地眷顾着你。<br/>
|
||||||
这一年,所有重要的人都在,没有一次无疾而终的告别。
|
这一年,所有重要的人都在,没有一次无疾而终的告别。<br/>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
{/* S9: LEXICON & ARCHIVE */}
|
{/* S9: LEXICON & ARCHIVE */}
|
||||||
<div className={getSceneClass(9)} id="scene-9">
|
<div className={getSceneClass(9)} id="scene-9">
|
||||||
<div className="reveal-wrap en-tag">
|
<div className="reveal-wrap en-tag">
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user