AD JB Toolbox 01

HTML 강좌 / div와 span은 언제 사용할까?

div와 span은 별도의 의미를 부여하지 않고 내용을 묶는 HTML 요소입니다. CSS나 스크립트를 적용할 그룹이 필요하지만 그 내용에 맞는 의미 요소가 없을 때 사용합니다. div는 큰 묶음에, span은 문장 안의 일부에 주로 씁니다.

div와 span의 차이

div는 여러 문단이나 카드 전체처럼 흐름 콘텐츠를 묶는 데 적합합니다. span은 문장 안의 짧은 구간처럼 구문 콘텐츠를 묶습니다. 두 요소 모두 그 자체로 ‘제목’, ‘버튼’, ‘중요함’ 같은 뜻을 전달하지 않습니다.

브라우저의 기본 표시에서는 div가 블록처럼 새 줄에서 시작하고 span은 주변 글과 같은 줄에 놓입니다. 하지만 화면 모양은 CSS로 바꿀 수 있으므로, 선택 기준은 모양보다 내용의 구조여야 합니다.

div 안에는 문단·목록 등 여러 요소를 묶을 수 있지만, span 안에는 문장 안에 들어갈 수 있는 내용만 넣습니다. 단순히 줄바꿈이 필요하다면 새 div를 만들기 전에 문단을 나누거나 CSS의 표시 방식을 조정할지 판단하세요.

스타일을 적용할 부분만 묶기

다음 코드를 HTML 파일의 body에 넣고, CSS를 head의 style 요소에 넣어 보세요.

<div class="product-card">
  <h2>텀블러</h2>
  <p>가격: <span class="price">15,000원</span></p>
</div>
.product-card {
  padding: 16px;
  border: 1px solid #dadada;
}
.price {
  color: #075cb4;
  font-weight: 700;
}

카드 전체에는 테두리가 생기고 가격 부분만 색과 굵기가 달라집니다. class는 CSS가 적용할 대상을 찾기 위한 이름입니다. CSS가 없어도 제품 이름은 h2, 설명은 p로 남아 의미를 잃지 않습니다.

실행할 때는 HTML을 body에, CSS를 head의 style에 넣고 파일을 저장한 뒤 새로고침하세요. 가격만 파랗게 보이지 않는다면 HTML의 class="price"와 CSS의 .price 철자가 같은지 확인합니다. 점(.)은 CSS에서 클래스를 선택한다는 표시이지 HTML 클래스 이름의 일부가 아닙니다.

의미 있는 요소가 있다면 먼저 사용하기

페이지의 주요 메뉴를 div로만 묶기보다 nav를, 독립적인 글을 표현할 때는 article을 검토하세요. 사용자가 누르는 기능에는 span을 클릭 가능하게 꾸미기보다 button을 쓰는 편이 키보드 조작과 의미 전달에 알맞습니다.

위 예제의 가격은 특별한 데이터 형식으로 처리하지 않으므로 span만으로 충분합니다. 목적에 맞는 의미 요소가 있는지는 MDN HTML 요소 목록에서 확인할 수 있습니다.

흔한 실수

span 안에 여러 문단이나 div를 넣지 마세요. 문장 안의 작은 구간을 묶는 요소이기 때문입니다. 레이아웃을 위해 모든 요소를 div로 바꾸는 것도 피하세요. CSS 클래스는 유지하면서 HTML 요소만 의미에 맞게 고칠 수 있습니다.

div와 span만으로 버튼이나 제목을 만들면 화면은 비슷하게 꾸밀 수 있어도 원래 요소가 제공하는 의미와 키보드 동작은 생기지 않습니다. 먼저 적합한 HTML 요소가 있는지 확인한 뒤, 의미 없는 묶음이 필요한 곳에만 이 둘을 사용하세요.

같은 카테고리의 다른 글
HTML / Tutorial / 연속된 공백 넣는 방법

HTML / Tutorial / 연속된 공백 넣는 방법

HTML에서 연속된 공백은 하나의 공백으로 처리합니다. 소스 코드에서 여러 칸을 띄어써도 브라우저에서는 한 칸을 띄어쓴 것으로 표현됩니다. 연속된 공백을 넣고 싶다면 특수 문자  를 사용합니다.

HTML 강좌 / div와 span은 언제 사용할까?

HTML 강좌 / div와 span은 언제 사용할까?

div와 span의 차이와 사용 기준을 설명하고, 의미 요소가 없는 경우에만 묶음 요소를 쓰는 예제를 보여 줍니다.

HTML 강좌 / 표 만들기

HTML 강좌 / 표 만들기

HTML 표의 기본 요소인 table, tr, th, td를 사용해 행과 열이 있는 데이터를 만들고, thead와 tbody로 구조를 나누는 방법을 설명합니다.

HTML 강좌 / 시맨틱 요소로 페이지 영역 나누기

HTML 강좌 / 시맨틱 요소로 페이지 영역 나누기

header, nav, main, section, article, aside, footer의 역할을 구분하고 간단한 페이지를 의미에 맞게 구성하는 방법을 설명합니다.

HTML 강좌 / 이미지 넣기: img, alt, 크기

HTML 강좌 / 이미지 넣기: img, alt, 크기

HTML img 요소로 이미지를 넣고 alt 대체 텍스트와 width·height를 설정하는 방법을 설명합니다. 실제 예제 이미지로 경로와 크기 문제도 확인할 수 있습니다.

HTML 강좌 / 읽기 쉬운 표 만들기: caption, th, scope, 셀 병합

HTML 강좌 / 읽기 쉬운 표 만들기: caption, th, scope, 셀 병합

caption과 제목 셀의 scope로 표의 관계를 분명히 하고, colspan·rowspan으로 셀을 병합할 때 주의할 점을 설명합니다.

HTML 강좌 / 링크(link)

HTML 강좌 / 링크(link)

HTML 링크의 href에 절대경로와 상대경로를 쓰고, 문서 내부 이동·이메일·새 탭·다운로드 링크를 만드는 방법을 예제로 설명합니다.

HTML / Tutorial / 양식에 안내 문구 추가하는 방법

HTML / Tutorial / 양식에 안내 문구 추가하는 방법

input 태그에 value를 이용해서 기본값을 만들 수 있습니다. 이 상태에서 버튼을 클릭하면 기본값이 전송됩니다. 만약 기본값이 아니라, 무엇을 입력해야 하는지 안내하는 문구를 넣고 싶다면 placeholder를 사용합니다. 화면 상에는 그 문자열이 보이지만, 버튼을 클릭했을 때 아무 값도 전송되지 않습니다.

HTML 강좌 / 반응형 이미지: srcset, sizes, picture

HTML 강좌 / 반응형 이미지: srcset, sizes, picture

HTML의 srcset과 sizes로 화면에 맞는 이미지 파일을 선택하고, picture로 좁은 화면의 이미지 구도를 바꾸는 방법을 실제 파일 예제로 설명합니다.

HTML 강좌 / HTML 문서의 기본 구조

HTML 강좌 / HTML 문서의 기본 구조

HTML 문서를 이루는 doctype, html, head, body의 역할과 기본 작성 순서를 예제로 설명합니다. 문서 정보와 페이지 본문을 구분하고 첫 HTML 파일을 직접 만들어 볼 수 있습니다.