Compare commits

..

1 Commits

Author SHA1 Message Date
stringadmin 85b2016e69 fix: 电商页面 KeepAlive 容器使用绝对定位铺满视口,解决底部留白问题
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 23:25:10 +08:00
3 changed files with 36 additions and 55 deletions
+4 -6
View File
@@ -1234,13 +1234,10 @@ function App() {
<PageTransition viewKey={activeView}>
{activePage}
</PageTransition>
</Suspense>
</ErrorBoundary>
{/* KeepAlive: EcommercePage stays mounted once visited, hidden via display:none */}
{/* KeepAlive: EcommercePage stays mounted once visited */}
{ecommerceEverMounted && (
<div className="keepalive-ecommerce" style={{ display: isEcommerceActive ? undefined : "none" }}>
<Suspense fallback={null}>
<div style={{ display: isEcommerceActive ? undefined : "none", position: "absolute", inset: 0, zIndex: 1 }}>
<EcommercePage
projects={projects}
isAuthenticated={Boolean(session)}
@@ -1253,9 +1250,10 @@ function App() {
initialTemplate={pendingEcommerceTemplate}
onInitialTemplateConsumed={() => setPendingEcommerceTemplate(null)}
/>
</Suspense>
</div>
)}
</Suspense>
</ErrorBoundary>
{loginPromptOpen && pendingAction ? (
<div className="login-gate-modal" role="dialog" aria-modal="true" aria-labelledby="login-gate-title">
+29 -39
View File
@@ -179,9 +179,9 @@
min-height: 0;
overflow: auto;
background: #101318;
padding: 32px 40px;
padding: 26px;
display: flex;
align-items: stretch;
align-items: center;
justify-content: center;
}
@@ -735,10 +735,10 @@
.ecom-video-tree {
display: flex;
align-items: stretch;
align-items: center;
gap: 0;
width: 100%;
min-height: 100%;
min-height: 0;
}
/* ── Source node ── */
@@ -746,9 +746,9 @@
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 10px;
flex-shrink: 0;
align-self: center;
}
.ecom-video-tree-node {
@@ -762,8 +762,8 @@
}
.ecom-video-tree-node--source {
width: 180px;
height: 230px;
width: 150px;
height: 190px;
flex-shrink: 0;
border-color: #1c4d3a;
background: #162820;
@@ -785,9 +785,9 @@
/* ── Text node (分镜文本) ── */
.ecom-video-tree-node--text {
min-width: 140px;
max-width: 170px;
padding: 16px 14px;
min-width: 120px;
max-width: 150px;
padding: 14px 12px;
cursor: default;
border-color: #2a3d30;
background: #131d1a;
@@ -824,8 +824,8 @@
/* ── Image node (分镜图) ── */
.ecom-video-tree-node--image,
.ecom-video-tree-node--video {
width: 170px;
height: 136px;
width: 150px;
height: 120px;
flex-shrink: 0;
}
@@ -919,7 +919,7 @@
/* ── Trunk connector (分支连接线) ── */
.ecom-video-tree__trunk {
position: relative;
width: 56px;
width: 48px;
flex-shrink: 0;
align-self: stretch;
}
@@ -928,7 +928,7 @@
position: absolute;
left: 0;
top: 50%;
width: 28px;
width: 24px;
height: 2px;
background: #3a4550;
transform: translateY(-50%);
@@ -948,15 +948,10 @@
.ecom-video-tree__branches-line {
position: absolute;
left: 28px;
left: 24px;
top: 0;
bottom: 0;
width: 28px;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: stretch;
padding: 0;
width: 24px;
}
.ecom-video-tree__branches-line::before {
@@ -970,28 +965,24 @@
}
.ecom-video-tree__branch-tap {
position: relative;
flex: 1;
display: flex;
align-items: center;
}
.ecom-video-tree__branch-tap::before {
content: "";
display: block;
position: absolute;
left: 0;
width: 100%;
height: 2px;
background: #3a4550;
}
.ecom-video-tree__branch-tap:nth-child(1) { top: 0; }
.ecom-video-tree__branch-tap:nth-child(2) { top: 50%; transform: translateY(-50%); }
.ecom-video-tree__branch-tap:nth-child(3) { bottom: 0; }
.ecom-video-tree__branch-tap::after {
content: "";
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
top: 0;
width: 100%;
height: 2px;
height: 100%;
background: linear-gradient(90deg, transparent, #00ff88, transparent);
animation: ecom-tree-branch-flow 2.4s ease-in-out infinite;
}
@@ -1025,19 +1016,18 @@
.ecom-video-tree__rows {
display: flex;
flex-direction: column;
gap: 0;
justify-content: space-between;
gap: 20px;
flex: 1;
min-width: 0;
align-self: stretch;
padding: 0;
align-self: center;
padding: 8px 0;
}
.ecom-video-tree__row {
display: flex;
align-items: center;
justify-content: flex-start;
flex: 1;
gap: 12px;
gap: 8px;
animation: ecom-tree-row-in 480ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)) both;
}
-7
View File
@@ -566,13 +566,6 @@
scrollbar-color: rgba(var(--accent-rgb), 0.42) transparent;
}
.keepalive-ecommerce {
position: absolute;
inset: 0;
z-index: 1;
overflow: hidden;
}
/* ── Info button & popover ────────────────────── */
.info-button {
display: inline-grid;