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

CSS display:block 완벽 가이드 – 블록 레벨 요소의 원리와 예제


CSS에서 display 속성에 block 값을 지정하면 해당 요소는 부모 요소가 제공하는 사용 가능한 전체 너비를 차지하며, 항상 새로운 줄에서 시작합니다. 즉, 줄바꿈이 강제로 일어납니다. display: block이 적용된 요소는 <div>나 <p> 요소처럼 렌더링되며, 이러한 요소를 블록 레벨(block-level) 요소라고 부릅니다.

문법(Syntax)

CSS display block의 기본 문법은 다음과 같습니다.

Selector {
    display: block;
}

예제 1: 버튼 클릭 시 블록 요소 동적 추가

아래 예제는 텍스트를 입력한 뒤 'Check' 버튼을 클릭하면 display: block 스타일이 적용된 <em> 요소 두 개가 동적으로 생성되어 화면에 추가되는 코드입니다. 원래 인라인 요소인 <em>에 display: block을 적용하면 어떻게 달라지는지 직접 확인할 수 있습니다.

<!DOCTYPE html>
<html>
<head>
<title>CSS Display Block</title>
<style>
form {
    width:70%;
    margin: 0 auto;
    text-align: center;
}
* {
    padding: 2px;
    margin:5px;
}
input[type="button"] {
    border-radius: 10px;
}
em{
    background-color: #C303C3;
    color: #fff;
    display:block;
}
</style>
</head>
<body>
<form>
<fieldset>
<legend>CSS-Display-Block</legend>
<label for="textSelect">Formatter: </label>
<input id="textSelect" type="text" placeholder="John Doe">
<input type="button" onclick="convertItalic()" value="Check">
<div id="divDisplay"></div>
</fieldset>
</form>
<script>
var divDisplay = document.getElementById("divDisplay");
var textSelect = document.getElementById("textSelect");
function convertItalic() {
    for(i=0; i<2; i++){
        var italicObject = document.createElement("EM");
        var italicText = document.createTextNode(textSelect.value);
        italicObject.appendChild(italicText);
        divDisplay.appendChild(italicObject);
    }
}
</script>
</body>
</html>

실행 결과

위 코드를 실행하면 아래와 같은 결과를 확인할 수 있습니다.

'Check' 버튼을 클릭하기 전

CSS display:block 완벽 가이드 – 블록 레벨 요소의 원리와 예제

'Check' 버튼을 클릭한 후 — 생성된 각 <em> 요소가 한 줄 전체를 차지하며 세로로 배치되는 것을 볼 수 있습니다. 이것이 바로 display: block이 만들어내는 블록 레벨 동작입니다.

CSS display:block 완벽 가이드 – 블록 레벨 요소의 원리와 예제

예제 2: 다양한 display 값 비교

다음 예제는 flex, none, inline-block, grid 등 여러 display 값을 함께 사용하여 렌더링 방식의 차이를 비교한 것입니다. block과 다른 값들이 어떻게 다르게 동작하는지 이해하는 데 큰 도움이 됩니다.

<!DOCTYPE html>
<html>
<head>
<style>
#flex {
    display: flex;
}
#none {
    display: none;
}
.inline-block {
    display: inline-block;
    background-color: mintcream;
}
.grid {
    display: grid;
    background-color: cornflowerblue;
}
div {
    margin: 30px;
    padding: 5px;
    height: 10px;
    line-height: 5px;
    text-align: center;
    background-color: lightblue;
    border: 2px solid black;
}
div > div {
    background-color: lightpink;
    border: 2px solid green;
}
div > div > div {
    background-color: sandybrown;
    border: 2px solid darkred;
}
</style>
</head>
<body>
<div><span id="flex">heyyy</span>
<div><span id="none">heyyy</span>
<div>
<span class="inline-block">heyyy</span>
<span class="inline-block">heyyy</span>
<div>
<span class="grid">heyyy demo</span>
<span class="grid">heyyy demo</span>
</div>
</div>
</div>
</div>
</body>
</html>

실행 결과

위 코드를 실행하면 아래와 같은 결과를 확인할 수 있습니다.

CSS display:block 완벽 가이드 – 블록 레벨 요소의 원리와 예제

display: block 핵심 정리

  • 요소의 너비가 부모 컨테이너의 가용 전체 너비만큼 확장됩니다.
  • 항상 새 줄에서 시작하므로 앞뒤 요소와 줄바꿈으로 구분됩니다.
  • width, height, margin, padding 등 박스 모델 속성을 자유롭게 적용할 수 있습니다.
  • <div>, <p>, <h1>~<h6>, <ul>, <section> 등이 대표적인 기본 블록 레벨 요소입니다.