overflow

컨테이너를 넘치는 콘텐츠의 처리 방식을 제어합니다. 스크롤, 잘라내기, 또는 그대로 표시할지를 결정하며, border-radius 클리핑이나 블록 서식 컨텍스트 생성에도 영향을 줍니다.

클래스 목록

클래스CSS설명
ovoverflow: visible기본값. 넘치는 콘텐츠가 컨테이너 밖으로 표시
ohoverflow: hidden넘치는 콘텐츠를 잘라냄. 스크롤바 없음
osoverflow: scroll항상 스크롤바 표시. 넘치지 않아도 스크롤바 유지
oaoverflow: auto넘칠 때만 스크롤바 표시. 가장 많이 사용
ocoverflow: clip넘치는 콘텐츠를 잘라냄. 프로그래밍 스크롤도 차단

시각적 비교

고정 크기 컨테이너(w20rem h10rem)에 넘치는 텍스트를 넣어 각 overflow 값의 차이를 비교합니다.

Visible — ov

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident.

기본값. 콘텐츠가 컨테이너 밖으로 넘쳐 표시됩니다

Hidden — oh

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident.

넘치는 부분이 잘려 보이지 않습니다. 스크롤 불가

Scroll — os

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident.

항상 스크롤바가 표시됩니다

Auto — oa

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident.

콘텐츠가 넘칠 때만 스크롤바가 나타납니다

Clip — oc

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident.

hidden과 비슷하지만 프로그래밍 스크롤도 차단됩니다

축별 제어 — overflow-x / overflow-y

가로와 세로 축을 개별적으로 제어하려면 overflow-xoverflow-y 전용 클래스를 사용합니다.

클래스CSS설명
oxvoverflow-x: visible가로 축 넘침 그대로 표시
oxaoverflow-x: auto가로 축만 넘칠 때 스크롤
oxhoverflow-x: hidden가로 축 넘침 잘라냄
oxsoverflow-x: scroll가로 축 항상 스크롤바 표시
oxcoverflow-x: clip가로 축 넘침 잘라냄 (프로그래밍 스크롤도 차단)
oyvoverflow-y: visible세로 축 넘침 그대로 표시
oyaoverflow-y: auto세로 축만 넘칠 때 스크롤
oyhoverflow-y: hidden세로 축 넘침 잘라냄
oysoverflow-y: scroll세로 축 항상 스크롤바 표시
oycoverflow-y: clip세로 축 넘침 잘라냄 (프로그래밍 스크롤도 차단)

클래스별 상세

ovoverflow: visible

기본값입니다. 넘치는 콘텐츠가 컨테이너 밖으로 그대로 표시됩니다. 별도로 지정할 일은 드물지만, 다른 overflow 값을 리셋할 때 사용합니다.

<!-- 기본값 리셋 (부모가 oh일 때 자식 복원) -->
<div class="oh br8px">
  <div class="ov">이 자식은 overflow: visible로 리셋</div>
</div>

ohoverflow: hidden

넘치는 콘텐츠를 잘라냅니다. 스크롤바 없이 깔끔하게 잘리며, 새로운 블록 서식 컨텍스트(BFC)를 생성합니다. border-radius 클리핑 문제 해결에 자주 사용됩니다.

<!-- border-radius 클리핑 -->
<div class="oh br8px">
  <img src="photo.jpg" class="w100p db" />
  <div class="p16px">이미지가 둥근 모서리에 맞춰 잘립니다</div>
</div>

<!-- 텍스트 말줄임 (한 줄) -->
<p class="oh wsn toe w20rem">
  이 텍스트는 한 줄로 표시되고 넘치면 ...으로 잘립니다
</p>

<!-- Clearfix (BFC 생성) -->
<div class="oh">
  <div class="fl w50p">Float Left</div>
  <div class="fl w50p">Float Right</div>
  <!-- oh가 부모 높이를 자동으로 잡아줍니다 -->
</div>

주요 활용

oh br8pxborder-radius 클리핑 — 자식 요소가 둥근 모서리를 뚫고 나오는 문제 해결
ohClearfix — float 자식의 높이를 부모가 잡지 못하는 문제 해결 (BFC 생성)
oh wsn toe텍스트 말줄임 — 한 줄 텍스트를 잘라내고 ... 표시

주의

oh는 스크롤 없이 콘텐츠를 잘라내므로, 사용자가 잘린 콘텐츠에 접근할 수 없습니다. 스크롤이 필요하면 oa를 사용하세요.

osoverflow: scroll

콘텐츠가 넘치지 않아도 항상 스크롤바를 표시합니다. 레이아웃 시프트를 방지하고 싶을 때 유용하지만, 대부분의 경우 oa가 더 적합합니다.

<!-- 항상 스크롤바 표시 -->
<div class="os h20rem p16px">
  <p>콘텐츠가 적어도 스크롤바가 표시됩니다.</p>
  <p>레이아웃 시프트 방지에 유용합니다.</p>
</div>

oaoverflow: auto

콘텐츠가 넘칠 때만 스크롤바를 표시합니다. 가장 많이 사용하는 overflow 값이며, 사이드바, 모달 내부, 코드 블록 등에 적합합니다.

<!-- 사이드바 스크롤 -->
<aside class="oa h100vh p2rem">
  <nav>긴 메뉴 목록...</nav>
</aside>

<!-- 모달 내부 스크롤 -->
<div class="modal pa t50p l50p bg18181B br8px p2rem">
  <div class="oa maxh50vh">
    <p>긴 콘텐츠가 들어가면 스크롤됩니다...</p>
  </div>
</div>

<!-- 넓은 테이블 가로 스크롤 -->
<div class="oxa w100p">
  <table class="w200rem">...</table>
</div>

자주 쓰는 조합

oa h40rem고정 높이 스크롤 영역 (사이드바, 패널)
oa maxh50vh최대 높이 제한 스크롤 (모달 내부)
oxa가로 스크롤만 (넓은 테이블, 코드 블록)
oya세로 스크롤만 (리스트, 채팅창)

ocoverflow: clip

oh와 비슷하게 넘치는 콘텐츠를 잘라내지만, 프로그래밍 방식의 스크롤도 완전히 차단합니다. BFC를 생성하지 않는 것도 차이점입니다.

<!-- 프로그래밍 스크롤도 차단 -->
<div class="oc w20rem h10rem">
  넘치는 콘텐츠가 잘리며, JavaScript scrollTo()도 동작하지 않습니다.
</div>

oh vs oc

oh는 JavaScript의 scrollTo()로 스크롤 가능하고 BFC를 생성합니다. oc는 프로그래밍 스크롤도 차단하며 BFC를 생성하지 않습니다.

자주 쓰는 패턴

oh br8px 조합은 자식 요소가 부모의 border-radius를 뚫고 나오는 문제를 해결합니다.

<!-- ✅ border-radius 클리핑 패턴 -->
<div class="oh br8px b1pxsolid27272A">
  <img src="cover.jpg" class="w100p db" />
  <div class="p16px">
    자식 이미지가 부모의 둥근 모서리를 뚫고 나오지 않습니다
  </div>
</div>

<!-- ❌ oh 없이 — 자식이 border-radius를 무시 -->
<div class="br8px b1pxsolid27272A">
  <img src="cover.jpg" class="w100p db" />
  <div class="p16px">이미지가 모서리를 뚫고 나옵니다</div>
</div>

<!-- 스크롤 가능한 사이드바 -->
<div class="dg gtc25rem-1fr h100vh">
  <aside class="oa py2rem px16px">
    <nav>긴 메뉴 목록</nav>
  </aside>
  <main class="oa p2rem">메인 콘텐츠</main>
</div>

팁 & 주의사항

oh는 콘텐츠를 잘라냄

oh는 스크롤바 없이 넘치는 콘텐츠를 잘라냅니다. 사용자가 잘린 내용에 접근할 수 없으므로, 스크롤이 필요하면 oa를 사용하세요.

oa = 필요할 때만 스크롤

oa는 콘텐츠가 넘칠 때만 스크롤바를 표시합니다. os는 항상 스크롤바가 보이므로 대부분 oa가 더 적합합니다.

oh는 새 블록 서식 컨텍스트(BFC) 생성

oh는 BFC를 생성하여 float 요소의 clearfix 역할도 합니다. 자식의 float가 부모 높이를 잡지 못하는 문제를 해결합니다.