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

CSS 블록 레벨 요소와 블록 박스 개념 완벽 정리

CSS에서 블록 레벨(block-level) 요소display 속성값이 'block', 'list-item' 또는 'table'로 지정된 요소를 의미합니다. 이러한 요소는 자신의 위와 아래에 항상 줄 바꿈을 강제로 만들어내므로, 문서 흐름 속에서 독립적인 영역을 차지하게 됩니다.

그리고 각 블록 레벨 요소는 블록 레벨 박스(block-level box)를 생성합니다. 이 박스는 위치 지정 체계(positioning scheme)의 일부가 되며, 동시에 자식 박스들을 담는 그릇 역할도 수행합니다.

블록 컨테이너 박스와 블록 박스

블록 컨테이너 박스(block container box)는 다음 두 가지 형태 중 하나로 존재합니다.

  • 블록 레벨 박스만 포함하며 블록 서식 맥락(block formatting context)을 따르는 경우
  • 인라인 레벨 박스만 포함하며 인라인 서식 맥락(inline formatting context)을 따르는 경우

여기서 말하는 블록 박스(block box)란 블록 레벨 박스가 동시에 블록 컨테이너이기도 한 경우를 가리키는 용어입니다. 즉, 스스로는 블록처럼 배치되면서 내부 콘텐츠 역시 블록 규칙에 따라 배치할 수 있는 박스입니다.

익명 블록 박스(Anonymous Block Box)

익명 블록 박스는 개발자가 직접 제어할 수 없는 박스입니다. 예를 들어 인라인 박스 내부에 블록 박스가 포함되면, 해당 블록 박스를 둘러싼 인라인 콘텐츠는 자동으로 익명 블록 박스로 감싸집니다. 이런 박스는 CSS 선택자로 직접 스타일을 지정할 수 없기 때문에, 상위 요소로부터 스타일을 상속받아 렌더링됩니다.

예제 코드

다음 예제는 블록 레벨 요소와 블록 박스, 그리고 익명 블록 박스의 동작을 확인할 수 있습니다. 컨테이너 안의 텍스트('Color Orange' 등)는 블록 박스들 사이에 끼어 있어 각각 익명 블록 박스로 감싸진다는 점에 주목해 보세요.

<!DOCTYPE html>
<html>
<head>
<title>CSS Block-level Elements and Block Boxes</title>
<style>
form {
   width:70%;
   margin: 0 auto;
   text-align: center;
}
* {
   padding: 2px;
   box-sizing: border-box;
   /*margin:5px;*/
}
input[type="button"] {
   border-radius: 10px;
}
.child{
   height: 40px;
   width: 100%;
   color: white;
   border: 4px solid black;
}
.child:nth-of-type(1){
   background-color: #FF8A00;
}
.child:nth-of-type(2){
   background-color: #F44336;
}
.child:nth-of-type(3){
   background-color: #C303C3;
}
.child:nth-of-type(4){
   background-color: #4CAF50;
}
.child:nth-of-type(5){
   background-color: #03A9F4;
}
.child:nth-of-type(6){
   background-color: #FEDC11;
}
</style>
</head>
<body>
<form>
<fieldset>
<legend>CSS Block-level Elements and Block Boxes</legend>
<div id="container">Color Orange
<div class="child"></div>Color Red
<div class="child"></div>Color Violet
<div class="child"></div>
</div><br>
</body>
</html>

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

CSS 블록 레벨 요소와 블록 박스 개념 완벽 정리