본문 바로가기

TIL

<CSS> 레이아웃 (1) - 박스 모델

- CSS 레이아웃

웹 문서의 구성은 기본적으로 박스를 기준으로 되어있다. 즉, 박스 모델이다. CSS 레이아웃은 이 박스 모델에 기초하고 있다. 

 

박스 모델은 아래 두 가지의 요소에 따라 나열 방법이 달라진다.

1) 블록 레벨(block-level) 요소

블록 레벨 요소란, 박스들이 가로로 각각 한 줄씩을 차지하는 요소들을 말한다. 따라서 세로로 길게 한 줄로 늘어서게 되며, 각 줄의 요소 옆에는 다른 박스가 올 수 없다.

*블록 레벨 태그 - <p>, <h1>~<h6>, <ul>, <ol>, <div>, <blockquote>, <form>, <hr>, <table>, <fieldset>, <address>

 

2) 인라인 레벨(inline-level) 요소

인라인 레벨 요소란, 블록 레벨 요소와 달리 한 줄에 여러 박스들이 위치할 수 있는 형태의 요소를 말한다. 보다 쉬운 이해를 위해 의인화를 해보자면, 블록 모델 요소들은 욕심이 많아 각각 한 줄씩을 혼자서 다 차지하려는 요소들이고, 인라인 레벨 요소는 비교적 너그럽게 각자가 차지하고 있는 줄의 옆자리를 다른 인라인 레벨 요소들과 함께 나누어 쓴다고 보면 되겠다.

*인라인 레벨 태그 - <img>, <object>, <br>, <sub>, <sup>, <span>, <input>, <textarea>, <label>, <button>

 

 

- 박스 모델

이제 CSS의 박스 모델에 대해 좀 더 구체적으로 알아보자면, 박스 모델은 크게 4가지 영역으로 나뉜다. 가장 내부에 위치하며 핵심적인 역할을 담당하는 '콘텐츠 영역', 콘텐츠 영역을 감싸는 테두리인 'border(테두리) 영역', 그리고 이 콘텐츠 영역과 테두리 영역 사이의 공간을 담당하는 'padding 영역', 마지막으로 박스들 사이의 여백을 담당하는 'margin 영역'이 그것이다.

 

 

- 박스 모델의 기본 속성들

1) width, height

박스 모델에서 가장 핵심적인 부분인 콘텐츠 영역의 크기를 설정하는 속성이다. width는 가로, height는 세로를 나타낸다. 크기는 px이나 cm의 수치로 나타내거나, 부모 요소를 기준으로 한 백분율 크기, 혹은 자동으로 결정되는 auto 중 선택하여 크기를 설정할 수 있다.

 

2) display

앞서 설명한 블록 레벨과 인라인 레벨의 요소를 때에 따라 바꾸어야 할 필요가 있다. 그럴 때 사용하는 것이 display 속성이다. 블록 레벨의 요소에 display: inline을 설정하면 인라인 레벨 요소로 바뀌고, 인라인 레벨 요소에 display: block을 설정하면 블록 레벨 요소로 바뀐다. 혹은 display: inline-block로 설정하여 두 특성을 모두 가지는 요소로 바꿀 수도 있다. 또한, none으로 설정할 경우 해당 요소를 화면에서 표현하지 않는다. visibility: hidden;과 비교되는데, visibility 속성은 똑같이 화면에서 해당 요소를 표현하지 않지만 해당 요소가 차지하고 있는 공간은 그대로 둔다는 것에 그 차이점이 있다. 따라서 필요에 따라 두 속성 중 골라 사용하면 된다.

 

 

 

 

 

참고 : 도서 <Do it! HTML5+CSS3 웹 표준의 정석>

'TIL' 카테고리의 다른 글

<자바 Java> 컬렉션 프레임워크(Collection Framework) (2) - Set  (0) 2021.11.20
<자바 java> 상속  (0) 2021.11.19
<CSS> 기초 개념  (0) 2021.11.17
<HTML> 기본 태그들 (2)  (0) 2021.11.16
<HTML> 기본 태그들 (1)  (0) 2021.11.15