Compare commits

...

2 Commits

Author SHA1 Message Date
stringadmin bf401e4ab0 fix: 视频流程树节点放大并修复分支线与节点的对齐错位
将 branch-tap 改为 flex:1 布局自动对齐行中心,
放大节点尺寸和间距使流程图在画布中更易阅读。

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