숫자 (1.5): font-size의 배수. 가장 권장되는 방법. (예: 16px 폰트의 1.5배 줄 간격 = 24px)
24px는 길이 값입니다. 150%는 이 속성을 지정한 요소의 글자 크기에서 계산한 길이가 상속되므로 단위 없는 1.5와 상속 결과가 다릅니다. 부모 글자 16px·자식 글자 32px에 자식의 별도 줄 높이가 없으면, 부모의 1.5는 자식에서 48px으로 쓰이고 부모의 150%는 계산된 24px이 자식에게 전달됩니다. 단위 없는 line-height의 이유를 함께 확인하세요.
p { line-height: 1.8; } /* 텍스트 가독성 향상을 위해 1.5 이상 권장 */
/* Google Fonts Noto Sans KR 적용 (웹 폰트) */body { font-family: 'Noto Sans KR', sans-serif; /* Noto Sans KR을 1순위로, 없으면 sans-serif 사용 */ background-color: #eef1f5; /* 아주 연한 파란색 배경 */ color: #34495e; /* 진한 회색 텍스트 */ line-height: 1.7; /* 기본 줄 간격 설정으로 가독성 향상 */ margin: 0; padding: 0;}/* 헤더 스타일링 */header { background-color: #2c3e50; /* 어두운 남색 배경 */ color: white; padding: 30px 0; text-align: center; box-shadow: 0 2px 5px rgba(0,0,0,0.2);}.main-title { font-size: 2.8em; /* 큰 제목 */ font-weight: 700; /* 굵게 */ letter-spacing: 1px; /* 자간 조절 */ margin-bottom: 5px; text-shadow: 2px 2px 3px rgba(0,0,0,0.3); /* 제목에 그림자 */}.subtitle { font-size: 1.2em; font-style: italic; /* 기울임 */ color: #bdc3c7; /* 연한 회색 */}/* 메인 콘텐츠 영역 */main { max-width: 800px; margin: 30px auto; padding: 20px; background-color: white; border-radius: 8px; box-shadow: 0 4px 15px rgba(0,0,0,0.1);}/* 블로그 게시물 전체 스타일 */.blog-post { padding: 20px;}.post-title { font-size: 2.2em; color: #2980b9; /* 파란색 제목 */ text-align: left; margin-bottom: 15px; border-bottom: 2px solid #2980b9; padding-bottom: 10px;}.post-meta { font-size: 0.9em; color: #7f8c8d; /* 회색 메타 정보 */ margin-bottom: 25px; text-align: right; /* 오른쪽 정렬 */}/* 일반 문단 스타일 */.blog-post p { font-size: 1.1em; margin-bottom: 1.2em; word-spacing: 1px; /* 단어 간격 미세 조정 */ text-indent: 20px; /* 첫 줄 들여쓰기 */}/* 중요 텍스트 스타일 */.blog-post .important-text { font-size: 1.2em; font-weight: bold; color: #c0392b; /* 진한 빨간색 */ background-color: #fcecec; /* 연한 빨간색 배경 */ padding: 10px 15px; border-left: 5px solid #e74c3c; /* 왼쪽 테두리 */ margin-bottom: 20px; border-radius: 5px;}/* 색상 예시 텍스트 */.color-example { font-weight: bold; padding: 2px 5px; border-radius: 3px;}.red { background-color: #ffe0e0; color: #cc0000; }.blue { background-color: #e0f2f7; color: #0056b3; }.green { background-color: #e6ffe6; color: #008000; }/* mark 태그 스타일 오버라이드 */mark { background-color: #ffff99; /* 기본 노란색 */ padding: 0 3px;}/* 인용문 스타일 */.blog-post .quote-text { font-style: italic; color: #555; border-left: 4px solid #f39c12; /* 주황색 세로선 */ padding-left: 15px; margin-left: 20px; font-size: 1.15em; line-height: 1.5; text-align: center; /* 가운데 정렬 */ background-color: #fffaf0; /* 아주 연한 주황색 배경 */ border-radius: 0 5px 5px 0;}/* 그림자 텍스트 */.shadow-text { color: #555; text-shadow: 1px 1px 2px rgba(0,0,0,0.5); /* 그림자 효과 */ font-weight: bold;}/* 푸터 스타일링 */footer { background-color: #34495e; color: white; text-align: center; padding: 20px 0; margin-top: 50px; font-size: 0.9em; box-shadow: 0 -2px 5px rgba(0,0,0,0.2);}.small-info { color: #bdc3c7; font-size: 0.8em; margin-top: 5px;}
결과 확인
Live Server를 통해 blog-post.html 파일을 열어 보세요.
제목의 크기·본문 행간·강조 문단의 테두리가 각각 어디에서 오는지 CSS 선택자와 대조하세요. 효과가 많다는 이유만으로 읽기 좋은 것은 아니므로 보조 정보의 대비와 좁은 화면의 줄바꿈도 확인합니다.
Google Fonts는 외부 요청입니다. 네트워크나 정책 때문에 로드되지 않아도 sans-serif로 글자는 보입니다. 개발자 도구의 실제 렌더된 글꼴과 Network 결과를 구분해 보고 text-shadow·text-indent의 효과를 관찰하세요.
이번 장에서는 웹 페이지의 시각적인 인상과 가독성을 결정하는 중요한 요소들인 색상, 폰트, 그리고 텍스트 스타일링에 대해 깊이 있게 다루었습니다.
각 속성의 역할을 구분하면 화면의 시각 구조를 더 안정적으로 조정할 수 있습니다.
색상, 폰트, 텍스트 속성은 대비와 본문 폭, 행간, 제목 위계를 함께 조절할 때 가독성을 만듭니다.
색상 속성은 배경, 본문, 상태 단서의 역할을 나누고 대비를 확인해 선택합니다.
독립 확인: 강조의 크기와 보조 정보의 대비
HTML을 바꾸지 않고 .important-text의 font-size를 1.4em으로 바꾸려 합니다. body에서 상속받은 크기가 16px인 조건에서 강조 문단의 글자 크기를 계산하고, .blog-post p의 1.1em과 어느 선언이 선택되는지 설명하세요.
계산과 매칭 확인
강조 문단은 .blog-post .important-text와 .blog-post p에 모두 맞습니다. 같은 일반 작성자 CSS에서 앞 선택자의 specificity가 더 높으므로 1.4em을 씁니다. 그 문단이 상속받은 크기는 16px이므로 16×1.4=22.4px이며 16×1.1×1.4로 연속 곱하지 않습니다. em을 같은 요소의 경쟁 선언에 중첩 적용하지 않기 때문입니다.
본문과 배경은 서로 비교해야 합니다. 현재 예제의 .post-meta는 흰 배경에 #7f8c8d를 쓰므로 일반 크기 글자에 필요한 4.5:1 대비를 충족하지 못합니다(약 3.48:1). blog.css의 해당 색을 #586366 등 충분히 어두운 값으로 바꾸고 실제 배경에서 확인하세요. WCAG의 일반 글자 대비 기준은 배경과 전경을 함께 평가합니다.