스플릿 스크린

Split screen

화면을 좌우(또는 상하) 두 영역으로 나눠 서로 다른 콘텐츠나 대비되는 메시지를 나란히 보여주는 레이아웃.

다른 이름: Split layoutTwo-panel layout
···
html
<div class="split" id="split">
  <div class="pane left"><i class="ic"></i><i class="ln"></i><i class="ln s"></i></div>
  <div class="pane right"><i class="ln"></i><i class="ln s"></i><i class="btn"></i></div>
</div>
css
.split{display:flex;width:min(94%,560px);height:min(88%,260px);border-radius:10px;overflow:hidden;border:1px solid var(--line)}
.pane{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:10px;padding:8%;
  transition:flex-grow .8s cubic-bezier(.2,.8,.2,1)}
.left{background:var(--accent);flex-grow:1}
.right{background:var(--surface);flex-grow:1}
.left .ic{width:22%;aspect-ratio:1;border-radius:50%;background:rgba(255,255,255,.85)}
.left .ln{height:8px;border-radius:3px;background:rgba(255,255,255,.7);width:70%}
.left .ln.s{width:45%}
.right .ln{height:8px;border-radius:3px;background:var(--line);width:80%}
.right .ln.s{width:55%}
.right .btn{margin-top:6px;width:46%;height:22px;border-radius:6px;background:var(--accent-3)}
js
const split = document.getElementById('split');
const left = split.querySelector('.left');
const right = split.querySelector('.right');
let toggled = false;
setInterval(() => {
  toggled = !toggled;
  left.style.flexGrow = toggled ? '1.5' : '1';
  right.style.flexGrow = toggled ? '0.7' : '1';
}, 1800);

로그인/회원가입 페이지에서 한쪽엔 폼, 다른 한쪽엔 브랜드 이미지를 넣는 구성이 가장 흔한 예입니다. 두 선택지를 비교하는 랜딩 페이지(개인용 vs 팀용 요금제)에도 자주 쓰입니다.

구현은 `display: flex`에 두 자식을 `flex: 1`로 반반씩(또는 `flex: 1.2`/`flex: .8`처럼 비대칭으로) 나누는 게 기본입니다. 화면이 좁아지면 보통 세로로 쌓이게(`flex-direction: column`) 바꿔서, 한쪽이 지나치게 좁아지는 걸 막습니다.

두 영역의 비중을 완전히 5:5로 맞추면 어느 쪽도 주인공이 아닌 것처럼 밋밋해 보일 수 있습니다. 실제로는 6:4나 황금비에 가깝게 살짝 기울이는 경우가 더 많습니다.