feat(view): fixed frame with its own scroll for the side panels, the table and the model
On wide screens the page is one fixed-height frame: the left list, the centre (model band on top, table below) and the right results each scroll on their own. The model band is 280–560 px (48vh) and the 3D view follows its container through a ResizeObserver. The table header stays on top. Below 1100 px the panels stack with a 60vh height limit. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
61260413c6
commit
65e751e4bb
2 files changed
+28
No files matched your search
@@ -734,3 +734,29 @@ body { background: #eef1f4; font-family: 'Noto Sans KR', system-ui, sans-serif;
|
||||
.toast { display: flex; align-items: center; gap: 10px; background: #1b2733; color: #ffffff; padding: 10px 14px; border-radius: 6px; font-size: 13px; box-shadow: 0 4px 14px rgba(0, 0, 0, 0.2); }
|
||||
.toast.error { background: #8a1c1c; }
|
||||
.toast .btn { min-height: 44px; }
|
||||
|
||||
/* --- 고정 프레임 (승인 2026-10-23): 좌측 창 · 중앙 상단(모델) · 중앙 하단 · 우측 창, 각각 독립 스크롤 --- */
|
||||
@media (min-width: 1101px) {
|
||||
.app { height: 100vh; overflow: hidden; }
|
||||
.top, .status-row { flex: none; }
|
||||
.grid { flex: 1 1 auto; min-height: 0; height: auto; grid-template-rows: minmax(0, 1fr); padding-bottom: 12px; }
|
||||
.grid > .panel, .grid > .center-col { min-height: 0; overflow: auto; }
|
||||
.grid > #viewer-block { display: flex; flex-direction: column; }
|
||||
.grid > #viewer-block .canvas { flex: 1 1 auto; height: auto; min-height: 240px; }
|
||||
/* ②–④: the model keeps a fixed band at the top; the table scrolls below it. */
|
||||
.center-col { display: grid; grid-template-rows: clamp(280px, 48vh, 560px) minmax(0, 1fr); gap: 12px; }
|
||||
.viewer-slot { min-height: 0; height: 100%; display: flex; flex-direction: column; }
|
||||
.viewer-slot > .viewer { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
|
||||
.viewer-slot .canvas { flex: 1 1 auto; height: auto; min-height: 180px; }
|
||||
.center-col > .viewer { min-height: 0; overflow: auto; }
|
||||
.rebar-table thead th, .quantity .rebar-table thead th { position: sticky; top: 0; background: #ffffff; z-index: 1; }
|
||||
}
|
||||
|
||||
@media (max-width: 1100px) {
|
||||
.app { min-height: 100vh; }
|
||||
.grid { height: auto; }
|
||||
.grid > .panel, .grid > .center-col { max-height: 60vh; overflow: auto; }
|
||||
.center-col { display: flex; flex-direction: column; gap: 16px; }
|
||||
.viewer-slot .canvas { height: 60vh; min-height: 420px; flex: none; }
|
||||
.rebar-table thead th { position: sticky; top: 0; background: #ffffff; z-index: 1; }
|
||||
}
|
||||
Reference in new issue
Block a user