AD JB Toolbox 01

CSS 강좌 / 문단과 목록의 간격, 정렬, 목록 표시 설정하기

CSS에서 문단 안의 줄 간격은 line-height, 문단 사이 여백은 margin, 첫 줄 들여쓰기는 text-indent로 조절합니다. 목록은 표시 기호의 종류와 위치, 안쪽 여백, 항목 사이 간격을 따로 설정해야 긴 항목도 읽기 좋게 정렬할 수 있습니다.

문단 안의 간격과 문단 사이의 간격 나누기

.article p {
  line-height: 1.65;
  margin-block: 0 1.2em;
}

line-height를 키우면 같은 문단에서 줄의 배치가 넓어집니다. margin-block을 키우면 문단 상자와 다음 내용 사이의 바깥 여백이 늘어납니다. 둘을 같은 의미로 사용하면 짧은 문단에서는 괜찮아 보여도 긴 문단의 줄 간격이 과해질 수 있습니다.

margin-block: 0 1.2em은 쓰기 흐름의 시작 쪽 여백을 0, 끝 쪽 여백을 1.2em으로 정합니다. 이 예제처럼 가로쓰기에서는 위쪽 0, 아래쪽 1.2em입니다. 세로쓰기에서는 물리적인 방향이 달라지므로 항상 위·아래라는 뜻은 아닙니다. 여기서 em은 문단 자신의 글자 크기를 기준으로 합니다. 원리는 MDN의 margin-block 설명를 참고하세요.

브라우저는 p와 목록에 기본 여백을 부여합니다. CSS에서 원하는 값으로 덮어쓰면 기본 여백과 새 여백을 구분하기 쉽습니다. 바깥 세로 여백은 조건에 따라 서로 합쳐질 수 있으므로 두 선언의 숫자를 항상 단순히 더하지 마세요. 예제는 시작 여백을 0으로 정해 문단 사이 간격을 끝 여백에서 조절하도록 했습니다.

정렬과 첫 줄 들여쓰기 구분하기

.article p { text-align: start; }
.article .intro { text-indent: 1.5em; }

text-align은 줄 안의 텍스트 정렬을 정합니다. start는 글 흐름의 시작 쪽이며 기본적인 왼쪽에서 오른쪽으로 쓰는 한국어 문서에서는 왼쪽입니다. 문단 전체 상자를 화면 중앙으로 옮기는 속성은 아닙니다. 가운데 정렬한 긴 설명문은 줄마다 시작 위치가 달라지므로 본문에는 읽기 쉬운 정렬을 먼저 선택하세요.

text-indent: 1.5em은 각 줄이 아니라 첫 줄의 시작을 들여씁니다. 전체 예제의 첫 문단에 class="intro"를 넣었으므로 실제로 관찰할 수 있습니다. 문단 전체를 들여쓰려면 padding 등 다른 설정을 검토해야 합니다. 정렬·들여쓰기·여백을 각각 바꾸고 어떤 부분이 움직이는지 비교하세요.

목록 기호와 글자 시작 위치 조절하기

순서가 있는 과정에는 ol, 순서가 중요하지 않은 항목에는 ul을 사용합니다. CSS에서 숫자 모양을 점으로 바꾸더라도 원래 HTML 구조가 바뀌지는 않습니다. 내용의 의미를 먼저 선택하고 표시 방법을 조절하세요.

속성 조절하는 것 긴 항목에서 볼 점
list-style-type 점·숫자 등 표시 기호 종류 순서의 의미를 이해할 수 있는가
list-style-position: outside 기호를 내용 상자 밖에 표시 둘째 줄이 첫 줄 글자 시작과 맞는가
list-style-position: inside 기호를 첫 줄 안에 포함 둘째 줄이 기호 아래쪽까지 돌아오는가
padding-inline-start 글 흐름 시작 쪽의 안쪽 여백 기호가 잘리거나 본문에 붙지 않는가

outside에서는 표시 기호가 밖에 있으므로 목록의 시작 쪽에 공간을 남겨야 합니다. 예제는 padding-inline-start: 1.6em을 사용합니다. 기본적인 가로쓰기 한국어에서는 왼쪽 padding에 해당합니다. inside는 기호가 첫 줄의 공간을 차지하여 긴 항목의 줄바꿈 위치가 달라집니다. 어느 쪽이 좋은지는 짧은 항목 하나로 결정하지 말고 실제 길이의 문장으로 확인하세요.

표시 기호를 없애려면 접근성도 함께 검토합니다. Safari는 nav 밖의 list-style: none 목록을 보조 기술에서 목록으로 인식하지 않을 수 있습니다. 의미를 유지해야 하는 디자인에서는 role="list" 보완 등을 검토할 수 있습니다. 이 강의의 전체 예제는 기호를 유지합니다. 관련 동작은 MDN의 list-style 설명에 설명되어 있습니다.

항목 사이 간격과 줄 사이 간격 구분하기

.article li + li { margin-block-start: 0.45em; }

li + li는 다른 li 바로 뒤에 오는 li를 선택합니다. 첫 항목 앞에는 추가 여백을 만들지 않고 두 번째 이후 항목 사이에만 간격을 넣습니다. 항목 내부에서 여러 줄로 이어지는 부분은 목록에서 물려받는 line-height로 조절합니다. 내용이 빽빽하다고 항목 간격만 늘리면 항목 안의 문장은 여전히 좁게 보일 수 있습니다.

긴 문단과 목록으로 실행하기

아래 코드를 paragraphs.html에 UTF-8로 저장하고 엽니다. 두 목록의 문장을 같게 두었으므로 표시 위치만 비교할 수 있습니다. 첫 줄 들여쓰기와 순서 있는 목록도 같은 파일에서 확인합니다.

<!doctype html>
<html lang="ko">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>문단과 목록 비교</title>
  <style>
    body { margin: 24px; font-family: sans-serif; color: #333; }
    .article { max-width: 65ch; }
    .article p { line-height: 1.65; margin-block: 0 1.2em; text-align: start; }
    .article .intro { text-indent: 1.5em; }
    .article ul, .article ol { padding-inline-start: 1.6em; margin-block: 0 1.2em; line-height: 1.65; }
    .article li + li { margin-block-start: 0.45em; }
    .outside { list-style-position: outside; }
    .inside { list-style-position: inside; }
    ol { list-style-type: decimal; }
  </style>
</head>
<body>
  <main class="article">
    <h1>작은 정원 이용 안내</h1>
    <p class="intro">정원에 처음 오셨다면 안내 표지를 먼저 확인하세요. 첫 문단에는 첫 줄 들여쓰기를 적용했습니다. 문장이 여러 줄로 이어지면 둘째 줄부터는 일반적인 문단 시작 위치로 돌아갑니다.</p>
    <p>문단 안의 줄 간격은 line-height, 문단과 다음 문단 사이의 공간은 margin으로 나누어 조절합니다. 화면을 좁혀 줄바꿈이 늘어나는 조건에서도 읽기 편한지 확인하세요.</p>
    <h2>outside 목록</h2>
    <ul class="outside">
      <li>물을 줄 때에는 흙의 상태를 먼저 확인하고, 화분 밖으로 흘러나온 물은 다른 방문자가 미끄러지지 않도록 닦아 주세요.</li>
      <li>이름표와 안내판을 읽고 통로를 따라 이동하세요. 여러 줄로 이어지는 항목의 둘째 줄이 첫 줄 글자와 어떻게 맞춰지는지 비교합니다.</li>
    </ul>
    <h2>inside 목록</h2>
    <ul class="inside">
      <li>물을 줄 때에는 흙의 상태를 먼저 확인하고, 화분 밖으로 흘러나온 물은 다른 방문자가 미끄러지지 않도록 닦아 주세요.</li>
      <li>이름표와 안내판을 읽고 통로를 따라 이동하세요. 여러 줄로 이어지는 항목의 둘째 줄이 첫 줄 글자와 어떻게 맞춰지는지 비교합니다.</li>
    </ul>
    <h2>순서가 있는 준비 과정</h2>
    <ol><li>안내문을 읽습니다.</li><li>물뿌리개를 준비합니다.</li><li>사용한 도구를 제자리에 돌려놓습니다.</li></ol>
  </main>
</body>
</html>

변경 결과를 확인하는 실습

  1. 창 너비를 줄여 목록 항목이 두 줄 이상이 되게 합니다. outside는 글자 시작이 맞고, inside는 둘째 줄이 표시 기호가 있던 공간 쪽까지 돌아오는지 비교하세요.
  2. .intro의 text-indent를 0으로 바꿉니다. 첫 문단의 첫 줄만 시작 위치가 달라지는지 확인하고 1.5em으로 되돌립니다.
  3. 문단의 margin-block 끝 값을 0으로 바꿉니다. 문단 안의 줄 간격은 유지되면서 문단 사이가 줄어드는지 확인하세요. 다음으로 line-height만 1.2로 바꾸어 차이를 구분한 뒤 원래 값으로 되돌립니다.
  4. li + li의 0.45em을 0과 1em으로 바꿔 비교합니다. 항목 내부 줄 간격과 첫 항목 앞쪽 공간이 달라지지 않는지 확인하세요.

기호가 잘리면 목록의 padding과 바깥 요소의 overflow를 확인합니다. 일부 문단만 다른 간격이면 선택자와 브라우저 기본 스타일을 확인하세요. 전체 예제의 65ch는 숫자 0의 너비를 기준으로 한 최대 길이이며 한국어 글자 수를 고정하는 값은 아닙니다.

같은 카테고리의 다른 글
CSS 강좌 / CSS란 무엇이고 HTML과 어떻게 다를까?

CSS 강좌 / CSS란 무엇이고 HTML과 어떻게 다를까?

HTML과 CSS의 역할을 구분하고, 같은 작은 정원 문서에 색상·배경·여백을 적용합니다. 실행 가능한 예제와 세 가지 변형 실습으로 스타일이 바뀌는 범위를 확인할 수 있습니다.

CSS / Tutorial / 표 꾸미기 / 배경색

CSS / Tutorial / 표 꾸미기 / 배경색

배경색은 background-color 속성으로 만듭니다. table, tr, th, td, thead, tbody, tfoot에 적용할 수 있습니다. 다음 표를 기본으로 하고, 배경색을 여러 곳에 추가해보겠습니다.

CSS / Tutorial / 인용문(Blockquote) 꾸미는 방법

CSS / Tutorial / 인용문(Blockquote) 꾸미는 방법

blockquote 요소의 기본 모양은 양쪽에 여백이 있는 것입니다. 그대로 사용하기보다는 여러 가지 모양으로 꾸미는 것이 일반적입니다. 다음은 아래와 같은 인용문을 꾸미는 몇 가지 예제입니다.

CSS 강좌 / 관계 선택자와 가상 클래스로 요소 고르기

CSS 강좌 / 관계 선택자와 가상 클래스로 요소 고르기

자손·자식·인접 형제·일반 형제 선택자를 같은 문서 구조에서 비교합니다. hover·focus-visible·first-child·nth-child를 포함한 전체 예제와 구조를 바꿔 선택 결과를 확인하는 실습을 제공합니다.

CSS / Tutorial / 양쪽 배분(균등 분할) 정렬 방법

CSS / Tutorial / 양쪽 배분(균등 분할) 정렬 방법

문단 정렬을 양끝으로 꽉차게 하는 경우가 있습니다. 한글에서는 배분 정렬, 워드에서는 균등 분할이라고 합니다. 일반적인 문단에서는 거의 사용하지 않고, 표에서 제목을 넣을 때 많이 사용합니다.

CSS / Tutorial / placeholder의 색, 글자 모양 등 꾸미는 방법

CSS / Tutorial / placeholder의 색, 글자 모양 등 꾸미는 방법

placeholder는 HTML5에서 새로 나온 속성으로 input 요소나 textarea 요소에 안내문을 넣을 수 있습니다. 기본 모양은 회색의 글자로, 배경색이 하얀색 또는 밝은 색이면 보기에 괜찮습니다. 하지만 배경색이 어두운 색이거나 화려한 색이면 회색 글자가 어울리지 않을 수 있습니다. placeholder는 ::placeholder 선택자로 선택하여 꾸밀 수 있습니다.

CSS / Tutorial / 유튜브 동영상을 반응형으로 삽입하는 방법

CSS / Tutorial / 유튜브 동영상을 반응형으로 삽입하는 방법

유튜브 영상을 블로그나 홈페이지에 넣을 때 보통 iframe을 사용합니다. 코드는 유튜브 영상 공유에서 를 클릭하여 구할 수 있습니다. 아래와 같은 코드인데, 고정폭입니다. 즉 웹브라우저의 가로폭이 커지든 작아지든 가로폭이 일정합니다. 이를 반응형으로 만들고 싶다면 아래처럼 합니다.

CSS / Tutorial / 마우스 호버 효과 / 텍스트 나오게 하는 방법

CSS / Tutorial / 마우스 호버 효과 / 텍스트 나오게 하는 방법

CSS로 특정 요소에 마우스를 올렸을 때 보이지 않던 특정 요소가 보이게 할 수 있습니다. 아래는 문단에 마우스를 올렸을 때 div 요소가 나오게 하는 예제입니다. div 요소 안에 텍스트가 있지만, 텍스트가 아닌 이미지 등 다른 것도 가능합니다.

CSS / Tutorial / 상속(inheritance)

CSS / Tutorial / 상속(inheritance)

CSS 속성은 상속하는 속성과 상속하지 않는 속성이 있습니다. 상속하는 속성은 자식 요소에 영향을 미칩니다. 상속하지 않는 속성은 자식 요소에 영향을 미치지 않습니다.

CSS 강좌 / 브라우저 개발자 도구로 CSS 확인하고 수정하기

CSS 강좌 / 브라우저 개발자 도구로 CSS 확인하고 수정하기

브라우저 개발자 도구에서 안내 문단을 선택하고, Styles의 선언과 Computed의 최종 값을 확인합니다. 색상 변경·선언 끄기·원본 저장 실습과 적용되지 않는 CSS의 원인별 점검 방법을 제공합니다.