AD JB Toolbox 01

HTML 강좌 / 목록 - ol, ul, dl, 중첩 목록

HTML 목록은 순서가 중요하면 ol, 순서가 중요하지 않으면 ul, 이름과 설명의 관계를 나타내면 dl로 작성합니다. 번호나 글머리표의 모양이 아니라 항목 사이의 의미를 기준으로 요소를 선택하세요.

ol, ul, dl 중 무엇을 사용할까?

요소 선택 기준 예
ol 항목 순서를 바꾸면 뜻이 달라집니다. 작업 단계, 순위
ul 항목 순서를 바꾸어도 뜻이 같습니다. 준비물, 특징
dl 이름과 값 또는 용어와 설명이 짝을 이룹니다. 용어 설명, 메타데이터

ol과 ul 안의 항목은 각각 li로 만듭니다. dl은 이름을 dt, 그에 대한 설명이나 값을 dd로 적습니다.

세 가지 목록을 한 문서에서 확인하기

다음 코드를 HTML 파일로 저장해 열면 글머리표 목록, 번호 목록, 설명 목록의 기본 표시를 비교할 수 있습니다. 예제의 글꼴은 화면 결과를 일정하게 보여 주기 위해 CSS로 지정했습니다.

<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>HTML 목록</title>
    <style>
      body { font-family: "Noto Sans KR", sans-serif; }
    </style>
  </head>
  <body>
    <h1>여행 준비</h1>
    <h2>준비물</h2>
    <ul>
      <li>물</li>
      <li>지도</li>
    </ul>
    <h2>진행 순서</h2>
    <ol>
      <li>일정 정하기</li>
      <li>가방 싸기</li>
    </ol>
    <h2>용어</h2>
    <dl>
      <dt>출발일</dt>
      <dd>여행을 시작하는 날</dd>
      <dt>도착일</dt>
      <dd>목적지에 도착하는 날</dd>
    </dl>
  </body>
</html>

준비물 글머리표 목록, 진행 순서 번호 목록, 용어 설명 목록을 브라우저에 표시한 결과

브라우저의 기본 들여쓰기와 마커 모양은 CSS에 따라 바뀔 수 있습니다. 중요한 차이는 겉모양이 아니라 순서와 이름·설명의 관계가 HTML에 담겨 있다는 점입니다.

ol의 시작 번호와 순서 바꾸기

ol은 기본적으로 1부터 번호가 붙습니다. start는 시작 번호를 정하고, 특정 li의 value는 그 항목의 번호를 바꿉니다.

<ol start="5">
  <li>다섯 번째 단계</li>
  <li value="9">아홉 번째 단계</li>
  <li>열 번째 단계</li>
</ol>

위 목록은 5, 9, 10으로 표시됩니다. 순서를 거꾸로 세어야 한다면 reversed 속성을 사용할 수 있습니다.

<ol reversed>
  <li>세 번째 항목</li>
  <li>두 번째 항목</li>
  <li>첫 번째 항목</li>
</ol>

번호를 변경하는 속성은 실제 순서가 뜻을 가질 때 사용합니다. 단순히 특정 모양의 숫자 마커가 필요하다는 이유로 순서 없는 항목을 ol로 바꾸지 않습니다.

dl로 이름과 설명 연결하기

dl은 용어 사전에만 쓰이는 요소가 아닙니다. 상품의 이름과 값, 일정의 날짜와 설명처럼 서로 대응하는 정보를 표현할 수도 있습니다. 하나의 dt에 여러 dd를 이어 쓸 수 있지만, 독자가 어떤 설명이 어느 이름에 속하는지 알 수 있게 구성해야 합니다.

<dl>
  <dt>운영 시간</dt>
  <dd>평일 오전 9시부터 오후 6시까지</dd>
  <dt>휴무일</dt>
  <dd>토요일과 일요일</dd>
</dl>

실제 운영 정보를 보여 주는 예제가 아니라 dt와 dd의 관계를 보여 주는 가상의 내용입니다.

목록 안에 목록 넣기

하위 목록은 관련된 상위 li의 안쪽에 넣습니다. 다음 예제에서 ‘옷’ 아래의 두 항목은 여행 준비물 중에서도 옷의 종류입니다.

<ul>
  <li>물</li>
  <li>옷
    <ul>
      <li>겉옷</li>
      <li>양말</li>
    </ul>
  </li>
</ul>

ol과 ul도 섞어서 중첩할 수 있습니다. 아래 예제에서는 전체 작업 단계의 순서는 중요하지만, ‘짐 싸기’에 필요한 두 준비물의 순서는 중요하지 않습니다.

<ol>
  <li>여행 날짜 정하기</li>
  <li>짐 싸기
    <ul>
      <li>옷 챙기기</li>
      <li>세면도구 챙기기</li>
    </ul>
  </li>
  <li>출발하기</li>
</ol>

하위 목록을 상위 ul이나 ol의 직접 자식으로 두지 말고, 관련된 li 안에 넣습니다. 목록을 문단인 p 안에 넣는 것도 피해야 합니다. 목록과 문단은 별도의 구조입니다.

목록 작성 시 확인할 점

  • 순서가 의미를 바꾸는지 먼저 판단한 뒤 ol 또는 ul을 선택합니다.
  • ol과 ul의 각 항목은 li로 작성합니다.
  • dl의 dt와 dd가 어떤 관계인지 독자가 알 수 있게 씁니다.
  • 하위 목록은 부모 li 안에 넣고, 마커의 모양과 간격은 CSS로 조절합니다.

더 자세한 목록 구조와 중첩 예제는 MDN의 HTML 목록 안내에서 확인할 수 있습니다.

같은 카테고리의 다른 글
HTML 강좌 / label과 input으로 입력 필드 만들기

HTML 강좌 / label과 input으로 입력 필드 만들기

label의 for와 input의 id를 연결하는 방법, name의 제출 역할, placeholder가 레이블을 대신할 수 없는 이유를 설명합니다.

HTML 강좌 / 링크(link)

HTML 강좌 / 링크(link)

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

HTML 강좌 / form의 구조와 GET·POST 제출 방식

HTML 강좌 / form의 구조와 GET·POST 제출 방식

form, action, method, name의 역할을 이해하고 GET과 POST 방식으로 양식 값이 전달되는 차이를 설명합니다.

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

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

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

HTML 강좌 / 제목과 문단

HTML 강좌 / 제목과 문단

HTML h1~h6 제목 태그와 p 문단 태그의 역할 및 올바른 구조를 예제로 설명합니다. 제목 단계 구성, br 줄바꿈과 자주 발생하는 작성 오류도 함께 확인할 수 있습니다.

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

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

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

HTML 강좌 / HTML 접근성 기본: 제목·링크·이미지·키보드

HTML 강좌 / HTML 접근성 기본: 제목·링크·이미지·키보드

제목 구조, 의미 있는 링크 문구, 이미지 대체 텍스트와 키보드 조작을 점검하는 HTML 접근성의 기본을 정리합니다.

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

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

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

HTML 강좌 / 여러 페이지로 된 작은 사이트 만들기

HTML 강좌 / 여러 페이지로 된 작은 사이트 만들기

홈·소개·문의 페이지를 연결하는 작은 사이트를 만들고 메뉴, 양식, 키보드 조작과 문서 오류를 점검하는 종합 실습입니다.

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

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

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