HTML CSS

CSS font 속성 - 16

mynote6676 2025. 6. 4. 20:01

=====================================================

학습 목표

CSS의 font 관련 속성(font-family,font-size,font-weight,font-stlye,line-height 등)을 이해하고 활용할 수 있다.

 

텍스트 스트일을 자유롭게 조정하여 웹 페이지의 가독성과 디자인을 개선할 수 있다.

======================================================

 

1.1 Font 속성이란?

CSS의 font 속성은 텍스트의 모양을 정의하는 데 사용됩니다. 텍스트는 웹 페이지에서 가장 중요한 요소 중

하나로, 적절한 스타일랑은 가독성과 디자인에 큰 영향을 미칩니다. 주요 font 관련 속성을 하나씩 살펴 보겠습니다.

 

font-family: 글꼴(폰트)을 지정합니다.

-예: "Arial" ,sans- serif (Arial이 없으면 sans-serif로 대체)

웹 안전 폰트(web Safe Font)와 구글 폰트(Google Fonts)를 사용할 수 있습니다.

 

font-size : 텍스트의 크기를 지정합니다.

- 단위 : px, em,rem, %등

예: 16px, 1.5em

 

font-weight : 텍스트의 두께(굵기)를 지정합니다.

값 : nomal, bold, 100~900( 100은 얇음, 900은 매우 굵음)

예 : font-weight: 700(bold와 동일)

 

font-style : 텍스트의 스타일을 지정합니다.

값 : nomal, italic,oblique

예 : font-stlye: italic

 

line-height: 줄 간격 (행간) 을 지정합니다.

단위 : 숫자(배수),px,em 등

예 : line-height: 1.5( 폰트 크기의 1.5배)

 

font ( 단축 속성): 여러 속성을 한 줄로 정의합니다.

순서 : font-style font - weight font-size/line-height font - family

예 : font : italic 700 16 px/ 1.5 "Arial",sans-serif

 

.blog-subtitle{
	font-family: 'open Sans' , sans - serif // a , b 에서 a 가 없으면 b 로 대체 됨
    font-size : 20px;
    font-weight; 400;
    font-style: italic;
	text-align: center;
    color: #666
    }

 

웹폰트 사용법

사용자가 pc에 설치된 폰트가 없고, 사용자가 서버에 폰트 파일을 올려놓지 않은 경우에는 폰트를 사용할 수 없습니다.

 

구글 폰트(Google Fonts)

구글 폰트 링크: https://fonts.google.com/

 

Browse Fonts - Google Fonts

Making the web more beautiful, fast, and open through great typography

fonts.google.com

사용 방법 : 사이트에서 사용하고 싶은 폰트(Black Han Sans)를 선택, Regular 400 + 링크를 복사 후, link 태그로 HTML 파일에 

                   붙여 넣기

<link href="https://fonts.googleapis.com/css2?family=Black+Han+Sans&display=swap" rel="stylesheet">
font-family: 'Black Han Sans', sans-serif;

 

| 실습 코드

 

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>구글 폰트 적용 예제</title>
  <!-- 구글 폰트 링크 -->
  <link rel="preconnect" href="https://fonts.googleapis.com">  // "preconnect"경로를 찾아가는데 도움을 준다 하지만 없어도 무방
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=Gaegu:wght@300;400;700&family=Roboto:ital,wght@0,100..900;1,100..900&family=Sunflower:wght@300;500;700&display=swap" rel="stylesheet">
  <style>
    .gaegu {
      font-family: 'Gaegu', sans-serif;
      font-weight: 400;
      font-size: 24px;
    }
    .roboto {
      font-family: 'Roboto', sans-serif;
      font-weight: 700;
      font-style: italic;
      font-size: 28px;
    }
    .sunflower {
      font-family: 'Sunflower', sans-serif;
      font-weight: 500;
      font-size: 20px;
    }
  </style>
</head>
<body>
  <h1>나는 기본 폰트야</h1>  
  <!-- 모든 브라우저는 자체적으로 기본 폰트 스택을 가지고 있습니다 -->
  <h1 class="gaegu">안녕! 나는 Gaegu 폰트야</h1>
  <h2 class="roboto">안녕! 나는 Roboto 폰트야</h2>
  <p class="sunflower">안녕! 나는 Sunflower 폰트야</p>
</body>
</html>

 

==================================================================================

2.1 line- height(줄 간격)

설명 : line-height는 텍스트 줄 간의 간격(행간)을 설정합니다. 가독성을 높이는 데 중요한 속성입니다.

값:

nomal: 브라우저 기본값(보통 1.2배)

length: px, %, em, rem 등 단위로 지정(예: 32px,1.5em)

number: 폰트 크기의 배수(예: 1.5는 폰트  크기의 1.5배)

p {line-height: 1.5;} /* 폰트 크기의 1.5배로 줄 간격 설정 */

 

2.2 . text-decoration(텍스트 장식)

설명 : 텍스트에 밑줄 ,취소선, 윗줄 등의 장식을 추가합니다.

none:장식없음

underline:밑줄

line-though:취소선

overline:윗줄.

a {text-decoration: underline;} /*링크에 밑줄 추가*/

 

2.3 white-space (공백 및 줄 바꿈 처리)

설명

white-space 속성은 텍스트의 공백(스페이스)과 줄 바꿈을 처리할지를 설정하는 css 속성입니다.

이 속성은 텍스트가 컨테이너 내에서 어떻게 표시되는지를 제어하며, 특히 공백과 줄 바꿈의 동작을 조정합니다.

normal: 공배과 줄 바꿈을 기본적으로 처리(여러 공백은 하나로, 줄 바꿈은 자동)

nowrap: 줄 바꿈 없이 한 줄로 표시

pre: 공백과 줄 바꿈 없이 그대로 유지.

pre-wrap: 공백과 줄 바꿈을 유지하되, 컨테이너 크기에 따라 줄 바꿈 가능.

pre-line : 줄 바꿈은 유지하되, 여러 공백은 하나로 처리.

div { white-space: nowrap; } /* 줄 바꿈 없이 한 줄로 표시 */

 

2.4 text- align (텍스트 정력)

설명 : 텍스트의 수평 정렬을 설정합니다.

값 : 

left: 왼쪽 정렬.

right : 오른쯕 정렬.

center: 가운데 정렬

justify: 양쪽 정렬.

h1 { text-align: center; } /* 제목을 가운데 정렬 */

 

2.5 text-overflow(텍스트 오버플로우 처리)

- 설명: 텍스트가 컨테이너를 넘칠 때 어떻게 처리할지 설정합니다.

필요 조건:

1. width 속성으로 컨테이너 크기 지정.

2. white-space: nowrap; 으로 줄 바꿈 방지.

3.overflow 속성이 visible이 아닌 값(예 : hidden).

값:

clip: 텍스트를 잘라냄.

ellipsis : 넘치는 텍스트를 "..."으로 표시.

p { text-overflow: ellipsis; } /* 넘치는 텍스트를 "..."으로 표시 */

 

| 실습 예제 1

 

뼈대 코드

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>뉴스 기사 스타일링</title>
  
    
</head>
<body>
  <h1 class="article-title">오늘의 헤드라인 뉴스</h1>
  <h2 class="article-subtitle">세계 곳곳에서 일어난 흥미로운 소식</h2>
  <p class="article-content">
    오늘 아침, 새로운 기술 혁신이 발표되었습니다. 이 기술은 환경 보호에 큰 기여를 할 것으로 기대됩니다. 
    자세한 내용은 <a href="#" class="article-link">여기</a>를 클릭하여 확인하세요. 
    전문가들은 이번 발표가 앞으로의 산업 발전에 큰 영향을 미칠 것이라고 전망하고 있습니다.
  </p>
</body>
</html>

 

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>뉴스 기사 스타일링</title>
  <style>
    body {
      padding: 40px;
      font-family: Arial, sans-serif;
    }
    .article-title {
      font-size: 32px;
      line-height: 1.4; /* 줄 간격 설정 */
      text-align: center; /* 가운데 정렬 */
      margin-bottom: 20px;
    }
    .article-subtitle {
      font-size: 20px;
      line-height: 1.5;
      text-align: center;
      color: #666;
      margin-bottom: 30px;
    }
    .article-content {
      font-size: 16px;
      line-height: 1.8; /* 가독성을 위한 넉넉한 줄 간격 */
      max-width: 700px;
      margin: 0 auto;
    }
    .article-link {
      text-decoration: none; /* 기본 밑줄 제거 */
      color: #007bff;
    }
    .article-link:hover {
      text-decoration: underline; /* 마우스 오버 시 밑줄 추가 */
    }
  </style>
</head>
<body>
  <h1 class="article-title">오늘의 헤드라인 뉴스</h1>
  <h2 class="article-subtitle">세계 곳곳에서 일어난 흥미로운 소식</h2>
  <p class="article-content">
    오늘 아침, 새로운 기술 혁신이 발표되었습니다. 이 기술은 환경 보호에 큰 기여를 할 것으로 기대됩니다. 
    자세한 내용은 <a href="#" class="article-link">여기</a>를 클릭하여 확인하세요. 
    전문가들은 이번 발표가 앞으로의 산업 발전에 큰 영향을 미칠 것이라고 전망하고 있습니다.
  </p>
</body>
</html>

 

| 실습 예제 2

뼈대 코드

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>채팅 메시지 스타일링</title>
  
</head>
<body>
  <h2>채팅 메시지 스타일링</h2>
  <div class="chat-message message-normal">
    안녕! 오늘 기분이 어때? 아주 긴 메시지를 보내볼게요. 이 메시지는 줄 바꿈이 됩니다.
  </div>
  <div class="chat-message message-nowrap">
    안녕! 오늘 기분이 어때? 아주 긴 메시지를 보내볼게요. 이 메시지는 줄 바꿈 없이 "..."로 표시됩니다.
  </div>
</body>
</html>

 

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>채팅 메시지 스타일링</title>
  <style>
    body {
      padding: 40px;
      font-family: Arial, sans-serif;
    }
    .chat-message {
      width: 300px; /* 고정된 너비 */
      border: 1px solid #ccc;
      padding: 10px;
      margin-bottom: 10px;
      background-color: #f0f0f0;
      border-radius: 5px;
    }
    .message-normal {
        /* 기본값 */
      white-space: normal; /* 기본 줄 바꿈 */
    }
    .message-nowrap {
       /* ... 처리 */
      white-space: nowrap; /* 줄 바꿈 방지 */
      overflow: hidden; /* 넘치는 부분 숨김 */
      text-overflow: ellipsis; /* "..." 표시 */
      text-align: right;
    }
  </style>
</head>
<body>
  <h2>채팅 메시지 스타일링</h2>
  <div class="chat-message message-normal">
    안녕! 오늘 기분이 어때? 아주 긴 메시지를 보내볼게요. 이 메시지는 줄 바꿈이 됩니다.
  </div>
  <div class="chat-message message-nowrap">
    안녕! 오늘 기분이 어때? 아주 긴 메시지를 보내볼게요. 이 메시지는 줄 바꿈 없이 "..."로 표시됩니다.
  </div>
</body>
</html>

 

| 실습 코드3

 

뼈대 코드

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>Text-Overflow 실습</title>
  
</head>
<body>
  <h2>Text-Overflow 실습: 채팅 메시지</h2>

  <h3>1. text-overflow: clip (텍스트 잘라냄)</h3>
  <div class="chat-message message-clip">
    안녕! 이 메시지는 아주 길어서 컨테이너를 넘치게 됩니다. 어떻게 표시될까요?
  </div>

  <h3>2. text-overflow: ellipsis (넘치는 부분 "..." 표시)</h3>
  <div class="chat-message message-ellipsis">
    안녕! 이 메시지는 아주 길어서 컨테이너를 넘치게 됩니다. 어떻게 표시될까요?
  </div>
</body>
</html>

 

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>Text-Overflow 실습</title>
  <style>
    body {
      padding: 40px;
      font-family: Arial, sans-serif;
    }
    /* 채팅 메시지 박스 스타일 */
    .chat-message {
      width: 250px; /* 1. 컨테이너 크기 지정 */
      white-space: nowrap; /* 2. 줄 바꿈 방지 */
      overflow: hidden; /* 3. 넘치는 부분 숨김 */
      border: 1px solid #ccc;
      padding: 10px;
      margin-bottom: 15px;
      background-color: #f0f0f0;
      border-radius: 5px;
    }
    /* text-overflow: clip 적용 */
    .message-clip {
      text-overflow: clip; /* 텍스트를 잘라냄 */
    }
    /* text-overflow: ellipsis 적용 */
    .message-ellipsis {
      text-overflow: ellipsis; /* 넘치는 텍스트를 "..."으로 표시 */
    }
    /* 제목 스타일 */
    h2, h3 {
      margin-bottom: 10px;
    }
  </style>
</head>
<body>
  <h2>Text-Overflow 실습: 채팅 메시지</h2>

  <h3>1. text-overflow: clip (텍스트 잘라냄)</h3>
  <div class="chat-message message-clip">
    안녕! 이 메시지는 아주 길어서 컨테이너를 넘치게 됩니다. 어떻게 표시될까요?
  </div>

  <h3>2. text-overflow: ellipsis (넘치는 부분 "..." 표시)</h3>
  <div class="chat-message message-ellipsis">
    안녕! 이 메시지는 아주 길어서 컨테이너를 넘치게 됩니다. 어떻게 표시될까요?
  </div>
</body>
</html>
728x90