Frontend/HTML

공간 분할의 기초: <div>와 <span>의 차이점과 인라인/블록 요소의 특징 이해하기

미니임 2026. 2. 26. 23:32

 

웹 페이지를 만드는 과정은 마치 빈 도화지에 구역을 나누고 내용을 채워 넣는 것과 같습니다. 이때 가장 기본이 되는 도구가 바로 공간 분할 태그입니다. 오늘은 HTML 레이아웃의 시작점인 <div>와 <span>의 차이점을 살펴보고, 블록(Block)과 인라인(Inline) 요소의 특징을 완벽하게 정리해 보겠습니다.

1. 블록 요소 (Block Element) vs 인라인 요소 (Inline Element)

태그의 차이를 알기 전에, 웹 브라우저가 요소를 화면에 배치하는 두 가지 핵심 방식을 이해해야 합니다.

블록 요소 (Block Level)

  • 특징: 항상 새로운 라인에서 시작하며, 부모 요소의 전체 너비를 차지합니다 (100%).
  • 대표 태그: <div>, <h1>~<h6>, <p>, <ul>, <li>, <section> 등
  • 크기 조절: width, height, margin, padding 값을 모두 가질 수 있습니다.

인라인 요소 (Inline Level)

  • 특징: 새로운 라인에서 시작하지 않으며, 딱 필요한 만큼의 너비만 차지합니다. 문장 중간에 들어갈 수 있습니다.
  • 대표 태그: <span>, <a>, <img>, <strong>, <em> 등
  • 크기 조절: width와 height를 지정할 수 없으며, 상하 margin 적용이 제한적입니다. (글자 흐름에 맞게 배치됩니다.)

2. <div> 태그: 구역을 나누는 큰 박스

<div>는 "Division"의 약자로, 논리적인 구역을 나누는 블록 요소입니다. 특별한 의미(Semantic)를 가지기보다는 여러 요소를 하나로 묶어 스타일을 적용하거나 레이아웃을 잡는 '컨테이너' 역할을 합니다.

예제 1: 레이아웃 구조 잡기

<!-- 블록 요소인 div는 세로로 쌓입니다 -->
<div style="background-color: #f0f0f0; padding: 20px; border: 1px solid #ccc;">
  <h2>서비스 소개</h2>
  <p>저희 서비스는 사용자에게 최적의 경험을 제공합니다.</p>
</div>

<div style="background-color: #e0f7fa; padding: 20px; border: 1px solid #b2ebf2; margin-top: 10px;">
  <h2>문의하기</h2>
  <p>궁금한 점은 언제든 연락주세요.</p>
</div>

3. <span> 태그: 텍스트 안의 작은 강조

<span>은 문장 내의 특정 부분에 스타일을 입히기 위해 사용하는 인라인 요소입니다. 텍스트의 일부를 감싸서 색상을 바꾸거나 폰트를 조절할 때 주로 사용됩니다.

예제 2: 문장 속 특정 단어 스타일링

<!-- span은 문장 흐름을 깨지 않고 필요한 만큼만 차지합니다 -->
<p>
  웹 프로그래밍에서 <span style="color: red; font-weight: bold;">가독성</span>은 매우 중요합니다.
  적절한 태그 사용은 <span style="background-color: yellow;">유지보수</span>를 쉽게 만듭니다.
</p>

4. 한눈에 비교하는 <div> vs <span>

구분<div> (Block)<span> (Inline)

기본 너비 부모 요소의 100% 컨텐츠의 크기만큼
줄바꿈 자동으로 발생 (세로 배치) 줄바꿈 없음 (가로 배치)
용도 레이아웃, 큰 구역 분할 텍스트 스타일링, 부분 강조
포함 관계 다른 블록/인라인 요소 포함 가능 주로 인라인 요소나 텍스트만 포함

5. 실전 예제: 공간 분할 종합 활용

실제로 어떻게 두 태그가 조화롭게 쓰이는지 확인해 보세요.

<style>
  .profile-card {
    border: 2px solid #333;
    padding: 15px;
    width: 300px;
    border-radius: 10px;
  }
  .highlight {
    color: #007bff;
    text-decoration: underline;
  }
  .status {
    font-size: 0.8em;
    color: #666;
  }
</style>

<!-- 전체를 감싸는 큰 박스는 div (Block) -->
<div class="profile-card">
  <h3>사용자 프로필</h3>
  <p>이름: <span class="highlight">홍길동</span></p>
  <p>상태: <span class="status">접속 중</span></p>
  <hr>
  <div>
    <strong>자기소개:</strong>
    안녕하세요! 저는 <span style="font-style: italic;">프론트엔드 개발자</span>를 꿈꾸는 학습자입니다.
  </div>
</div>

6. 주의사항: 태그 사용의 규칙

  1. 중첩 규칙: 블록 요소(<div>) 안에는 다른 블록 요소와 인라인 요소(<span>)를 넣을 수 있습니다. 하지만 일반적인 경우, 인라인 요소(<span>) 안에 블록 요소(<div>)를 넣는 것은 문법적으로 권장되지 않습니다.
  2. 의미 있는 태그(Semantic Tag) 우선: 단순히 구역을 나눌 때는 <div>를 쓰지만, 제목은 <h1>, 목록은 <ul>, 본문은 <p>와 같이 의미에 맞는 태그를 먼저 고려하는 것이 SEO(검색 엔진 최적화)에 유리합니다.

이제 <div>로 큼직한 집의 구조를 잡고, <span>으로 집 내부의 소품들을 장식하는 법을 이해하셨나요? 이 두 가지 태그만 자유자재로 다뤄도 HTML 레이아웃의 절반은 완성된 것이나 다름없습니다.

반응형