Computer >> 컴퓨터 >  >> 프로그래밍 >> CSS

CSS overflow 속성으로 넘치는 콘텐츠 처리하기


CSS overflow 속성이란?

요소에 지정한 크기보다 내용이 많아지면 콘텐츠가 박스 밖으로 삐져나오는데, 이를 오버플로(overflow)라고 합니다. CSS의 overflow 속성을 사용하면 이렇게 넘친 콘텐츠를 원하는 방식으로 처리할 수 있습니다. 콘텐츠를 잘라내거나(clip), 스크롤바를 제공해 숨겨진 영역을 확인할 수 있게 하거나, 박스 밖으로 그대로 렌더링할 수도 있습니다.

overflow 속성의 주요 값

  • visible — 기본값. 넘친 콘텐츠가 요소 밖으로 그대로 표시됩니다.
  • hidden — 요소 경계를 벗어난 부분을 잘라내고 나머지는 보이지 않게 합니다.
  • scroll — 콘텐츠 양과 무관하게 가로·세로 스크롤바를 항상 표시합니다.
  • auto — 콘텐츠가 넘칠 때만 필요한 방향의 스크롤바를 자동으로 표시합니다.

문법(Syntax)

CSS overflow 속성의 기본 문법은 다음과 같습니다.

Selector {
    overflow: /*값*/;
}

예제 1 — scroll 값으로 스크롤 가능한 컨테이너 만들기

아래 예제는 overflow: scroll이 적용된 고정 높이(110px)의 div에 긴 텍스트를 담습니다. 화면에는 스크롤바가 생기고, 버튼을 누르면 JavaScript로 overflow 값을 hidden으로 변경해 스크롤바를 제거합니다.

예제 코드

<!DOCTYPE html>
<html>
<head>
<title>CSS Overflow 예제</title>
<style>
form {
    width: 70%;
    margin: 0 auto;
    text-align: center;
}
* {
    padding: 2px;
    margin: 5px;
}
input[type="button"] {
    border-radius: 10px;
}
#containerDiv {
    margin: 0 auto;
    height: 110px;
    overflow: scroll;
}
</style>
</head>
<body>
<form>
<fieldset>
<legend>CSS Overflow</legend>
<div id="containerDiv">
This is paragraph 1 with some dummy text. This is paragraph 1 with some dummy text. This is paragraph 1 with some dummy text. This is paragraph 1 with some dummy text. This is paragraph 1 with some dummy text. This is paragraph 1 with some dummy text. This is paragraph 1 with some dummy text. This is paragraph 1 with some dummy text.
</div>
<input type="button" onclick="add()" value="스크롤바 제거">
</fieldset>
</form>
<script>
function add() {
    document.querySelector('#containerDiv').style.overflow = "hidden";
}
</script>
</body>
</html>

실행 결과

[스크롤바 제거] 버튼을 클릭하기 전 — 콘텐츠가 넘쳐 스크롤바가 표시됩니다.

CSS overflow 속성으로 넘치는 콘텐츠 처리하기

버튼을 클릭한 후 — 넘친 콘텐츠가 잘려 보이지 않습니다.

CSS overflow 속성으로 넘치는 콘텐츠 처리하기

예제 2 — auto 값으로 이미지 넘침 처리하기

두 번째 예제는 100×100 크기의 작은 컨테이너에 이미지를 넣고 overflow: auto를 적용한 사례입니다. 처음에는 컨테이너보다 이미지가 커서 스크롤바가 나타나며, 버튼을 클릭하면 컨테이너 크기를 이미지 크기에 맞춰 조정하고 overflowhidden으로 변경해 스크롤바 없이 이미지 전체를 표시합니다.

예제 코드

<!DOCTYPE html>
<html>
<head>
<title>CSS Overflow 예제</title>
<style>
form {
    width: 70%;
    margin: 0 auto;
    text-align: center;
}
* {
    padding: 2px;
    margin: 5px;
}
input[type="button"] {
    border-radius: 10px;
}
#containerDiv {
    margin: 0 auto;
    height: 100px;
    width: 100px;
    overflow: auto;
}
</style>
</head>
<body>
<form>
<fieldset>
<legend>CSS Overflow</legend>
<div id="containerDiv">
<img id="image" src="https://www.tutorialspoint.com/sas/images/sas-mini-logo.jpg">
</div>
<input type="button" onclick="fitHeight()" value="스크롤바 제거">
</fieldset>
</form>
<script>
var containerDiv = document.getElementById("containerDiv");
var imgSelect = document.getElementById("image");
function fitHeight() {
    containerDiv.style.height = imgSelect.height + 'px';
    containerDiv.style.width = imgSelect.width + 'px';
    containerDiv.style.overflow = 'hidden';
}
</script>
</body>
</html>

실행 결과

버튼을 클릭하기 전 — 컨테이너보다 이미지가 커서 스크롤바가 나타납니다.

CSS overflow 속성으로 넘치는 콘텐츠 처리하기

버튼을 클릭한 후 — 컨테이너가 이미지 크기에 맞게 조정되어 스크롤바가 사라집니다.

CSS overflow 속성으로 넘치는 콘텐츠 처리하기

정리

overflow 속성은 고정된 크기의 레이아웃에서 콘텐츠 넘침을 제어하는 필수 도구입니다. 단순히 넘친 부분을 감추고 싶다면 hidden, 사용자가 전체 내용을 확인할 수 있게 하려면 scroll 또는 auto를 상황에 맞게 선택하면 됩니다.