CSS overflow
HTML에서 요소 안의 내용이 요소를 벗어났을 때 스크롤을 생성하는 방법입니다.
다음과 같이 width와 height가 고정되지 않은 div 안에 텍스트가 있습니다.
<!DOCTYPE html>
<html>
<head>
<style>
.container {
border: 3px solid black;
}
</style>
</head>
<body>
<div class="container">
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Reiciendis nam, nostrum sed vitae corporis quis quia
deleniti quod doloremque consequuntur eius magni consectetur earum doloribus. Sapiente voluptas rem dignissimos
repellat?Lorem ipsum dolor, sit amet consectetur adipisicing elit. Blanditiis quidem laborum laboriosam rerum
vitae dignissimos dolores dolorum pariatur. Repudiandae unde nam, quae alias deleniti numquam exercitationem omnis
atque in praesentium!Lorem. Minim aliqua ullamco mollit sunt qui est do. Esse elit commodo Lorem laborum anim et
ea exercitation et. Amet Lorem veniam eiusmod non aliquip est consectetur est consequat fugiat. Irure ut nostrud
elit enim id.
</div>
</body>
</html>
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Reiciendis nam, nostrum sed vitae corporis quis quia
deleniti quod doloremque consequuntur eius magni consectetur earum doloribus. Sapiente voluptas rem dignissimos
repellat?Lorem ipsum dolor, sit amet consectetur adipisicing elit. Blanditiis quidem laborum laboriosam rerum
vitae dignissimos dolores dolorum pariatur. Repudiandae unde nam, quae alias deleniti numquam exercitationem omnis
atque in praesentium!Lorem. Minim aliqua ullamco mollit sunt qui est do. Esse elit commodo Lorem laborum anim et
ea exercitation et. Amet Lorem veniam eiusmod non aliquip est consectetur est consequat fugiat. Irure ut nostrud
elit enim id.
width와 height가 고정되지 않았기 때문에(width 혹은 height 속성을 설정하지 않았기 때문에) 이 코드에서는 텍스트의 길이가 아무리 길어도 이 요소에는 스크롤바가 생기지 않고 무한히 늘어납니다. 즉, 길이가 설정되어 있지 않은 요소에는 overflow 속성을 사용해도 스크롤바가 생성되지 않습니다.
height를 고정시켜 보겠습니다.
.container {
border: 3px solid black;
height: 100px;
}
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Reiciendis nam, nostrum sed vitae corporis quis quia
deleniti quod doloremque consequuntur eius magni consectetur earum doloribus. Sapiente voluptas rem dignissimos
repellat?Lorem ipsum dolor, sit amet consectetur adipisicing elit. Blanditiis quidem laborum laboriosam rerum
vitae dignissimos dolores dolorum pariatur. Repudiandae unde nam, quae alias deleniti numquam exercitationem omnis
atque in praesentium!Lorem. Minim aliqua ullamco mollit sunt qui est do. Esse elit commodo Lorem laborum anim et
ea exercitation et. Amet Lorem veniam eiusmod non aliquip est consectetur est consequat fugiat. Irure ut nostrud
elit enim id.
height가 고정되면서 텍스트가 요소를 벗어났습니다.
이제 css의 overflow 속성을 사용해서 벗어난 부분을 처리해 보도록 하겠습니다.
- 이 글에서는 height와 수직 방향의 스크롤만 다루겠습니다. width와 수평방향의 스크롤도 이와 동일하게 적용됩니다.
- 수직 방향 스크롤은 overflow-y, 수평 방향 스크롤은 overflow-x 속성으로 적용하고, overflow 속성은 두 개에 동시에 적용합니다. 이 글에서는 편의상 overflow 속성만 사용하겠습니다.
구문
overflow: visible;
overflow: hidden;
overflow: clip;
overflow: scroll;
overflow: auto;
visible(기본값) | 요소의 콘텐츠가 경계를 넘어가도 숨기지 않고 보여줍니다. |
hidden | 경계를 넘어가는 콘텐츠를 숨깁니다. |
scroll | 항상 스크롤바를 보여줍니다. (콘텐츠가 넘치지 않아도 항상 스크롤바 표시). |
auto | 콘텐츠가 경계를 넘어갈 때에만 스크롤바를 보여줍니다. |
1. visible
visible은 기본값이므로 위의 실행화면의 상태가 visible의 상태입니다.
2. hidden
.container {
border: 3px solid black;
height: 100px;
overflow: hidden;
}
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Reiciendis nam, nostrum sed vitae corporis quis quia
deleniti quod doloremque consequuntur eius magni consectetur earum doloribus. Sapiente voluptas rem dignissimos
repellat?Lorem ipsum dolor, sit amet consectetur adipisicing elit. Blanditiis quidem laborum laboriosam rerum
vitae dignissimos dolores dolorum pariatur. Repudiandae unde nam, quae alias deleniti numquam exercitationem omnis
atque in praesentium!Lorem. Minim aliqua ullamco mollit sunt qui est do. Esse elit commodo Lorem laborum anim et
ea exercitation et. Amet Lorem veniam eiusmod non aliquip est consectetur est consequat fugiat. Irure ut nostrud
elit enim id.
hidden 값을 사용하니 요소의 테두리를 벗어난 텍스트는 모두 사라졌습니다.
3. scroll
.container {
border: 3px solid black;
height: 100px;
overflow: hidden;
}
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Reiciendis nam, nostrum sed vitae corporis quis quia
deleniti quod doloremque consequuntur eius magni consectetur earum doloribus. Sapiente voluptas rem dignissimos
repellat?Lorem ipsum dolor, sit amet consectetur adipisicing elit. Blanditiis quidem laborum laboriosam rerum
vitae dignissimos dolores dolorum pariatur. Repudiandae unde nam, quae alias deleniti numquam exercitationem omnis
atque in praesentium!Lorem. Minim aliqua ullamco mollit sunt qui est do. Esse elit commodo Lorem laborum anim et
ea exercitation et. Amet Lorem veniam eiusmod non aliquip est consectetur est consequat fugiat. Irure ut nostrud
elit enim id.
scroll 값으로 설정하니 스크롤이 생겼습니다. 여기서 텍스트를 모두 없애도
<!DOCTYPE html>
<html>
<head>
<style>
.container {
border: 3px solid black;
height: 100px;
overflow: scroll;
}
</style>
</head>
<body>
<div class="container">
</div>
</body>
</html>
스크롤은 그대로 남아있습니다.
4. auto
.container {
border: 3px solid black;
height: 100px;
overflow: auto;
}
overflow를 auto로 설정하면 텍스트가 요소의 테두리를 넘어가지 않았을 때에는 스크롤이 생성되지 않고
텍스가 요소의 테두리를 넘어가는 경우에는 자동으로 스크롤이 생성됩니다.
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Reiciendis nam, nostrum sed vitae corporis quis quia
deleniti quod doloremque consequuntur eius magni consectetur earum doloribus. Sapiente voluptas rem dignissimos
repellat?Lorem ipsum dolor, sit amet consectetur adipisicing elit. Blanditiis quidem laborum laboriosam rerum
vitae dignissimos dolores dolorum pariatur. Repudiandae unde nam, quae alias deleniti numquam exercitationem omnis
atque in praesentium!Lorem. Minim aliqua ullamco mollit sunt qui est do. Esse elit commodo Lorem laborum anim et
ea exercitation et. Amet Lorem veniam eiusmod non aliquip est consectetur est consequat fugiat. Irure ut nostrud
elit enim id.
'프론트엔드 HTML CSS JAVASCRIPT' 카테고리의 다른 글
[HTML, CSS] 아이콘 추가하는 방법 - fontawesome 사용법 (1) | 2019.08.22 |
---|---|
[HTML, CSS] 스크롤바 스타일(디자인)하는 방법 - webkit-scrollbar (11) | 2019.08.20 |
[HTML, JAVASCRIPT, CSS] 마우스 오버 시 HTML 요소(이미지, div 등) 확대(zoomIn) 하는 방법. 옆에 요소 안밀려나게/밀려나게 (3) | 2019.08.18 |
[HTML, JAVASCRIPT] fetch를 사용하여 데이터 요청 후 화면에 적용하는 방법 ajax (4) | 2019.08.17 |
[HTML, CSS] div 자식요소 가운데 정렬하는 방법 - margin, text-align, flexbox (1) | 2019.08.14 |