FrontEnd

Chapter 07. 텍스트를 표현하는 다양한 스타일

계란💕 2022. 4. 20. 23:59

1. 글꼴 관련 스타일

  1) 글꼴을 지정하는 font-family 속성

    - 웹 문서에서 사용할 끌꼴은 font-family 속성으로 지정한다. 

    - 기본형: font-family : <글꼴 이름> | [<글꼴 이름>, <글꼴 이름>]

    - 웹 문서에서 지정한 글꼴이 사용자 시스템에 설치되어 있지 않으면 의도한 글꼴이 아닌 글꼴로 표시된다.

    - 따라서, 없을 경우를 대비한 두 번째, 두 번째 글꼴까지 생각해야한다.

 

  2) 글자크기를 지정하는 font-size 속성

    - 글자 크기 단위는 px(픽셀), pt(포인트) 등으로 지정가능, 백분율도 가능하다.

    - 키워드를 사용하여 글자 크기 지정하기

    - 단위를 사용하여 글자 크기 지정하기

      -> 예전에는 절대 크기 단위 px(픽셀), pt(포인트)를 사용, 최근에는 상대크기 단위인 em, rem 주로 사용

    - 백불율을 사용하여 글자 크기 지정하기

    - 이탤릭체로 글자를 표시하는 font-style 속성

      -> italic / oblique 중에서 웹에는 주로 italic을 사용한다. 

    - 글자 굵기를 지정하는 font-weight 속성

 

 

2. 웹 폰트 사용하기

  1) 웹 폰트란?

  Def) 웹 폰트: 

  - 웹 문서를 작성할 때, 글꼴 정보를 함께 저장해야 사용 가능하다.

  - 기존에 가지고 있던 웹 폰느를 사용했다면 서버에 올릴 때, 웹 폰트 파일도 함께 업로드해야한다.

    -> 사용자 시스템에없는 글꼴이더라도 웹 문서를 만들 때, 사용한 글꼴을 내려받은 후, 표시한다.

    -> 웹 제작자가 의도한 대로  텍스트를 보여줄 수 있다.  

 

 

  2) 웹 폰트 업로드하고 사용하기

  - 컴퓨터에서 사용하는 글꼴은 트루타입(TrueType)이다.

    -> 그런데 이는 크기가 커서 웹에서 사용하기ㄴ에는 적절하지 않다.

    -> 웹에 적합한 글꼴: EOT(embedded open type), WOFF(web open font format), WOFF2

    -> 웹 폰트가 준비되면 @font-face 속성을 사용해서 정의한다.

    (1) font-family 속성을 사용해 글꼴 이름 만든다.

    (2) local()문을 사용하여 사용자 시스템에 해당 글꼴이 있는지 확인한다.

    (3) 만약, 없다면 WOFF포맷으로 된 글꼴을 내려 받아야 한다.

    (4) src 속성에서 사용할 글꼴 파일의 경로를 지정한다.

   

 

  Ex) Ostritch라는 글꼴의 웹 폰트 사용하기

<hide/>
<style>
      @font-face {
        font-family: 'Ostrich';  /* 폰트 이름 */
        src: local('Ostrich Sans'), 
              url('fonts/ostrich-sans-bold.woff') format('woff'), 
              url('fonts/ostrich-sans-bold.ttf') format('truetype'), 
              url('fonts/ostrich-sans-bold.svg') format('svg');
      }
      .wfont {
        font-family:'Ostrich', sans-serif; /* 웹 폰트 지정 */
      }
      p {
        font-size:30px; /* 글자 크기 */
      }
    </style>
</head>
<body>
  <p>Using Default Fonts</p>
  <p class="wfont">Using Web Fonts</p>

  Note)

 

 

 

 

  3) 구글 폰트 사용하기

  - 구글 폰트는 웹 문서에 링크해서 쉽게 사용가능하다.

  - 웹 문서에 스타일 소스를 넣으면 된다. 

 

  Ex) 나눔펜 글씨 글꼴 사용하기

<hide/>
<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8">
    <title>구글 폰트 사용하기</title>
    <style>
      @import url('https://fonts.googleapis.com/css2?family=Nanum+Pen+Script&display=swap');
      h1 {
        font-size:60px;
        font-weight:bold;       
        font-family: 'Nanum Pen Script', cursive;
      }
    </style>
  </head>
  <body>
    <h1>HTML+CSS+JavaScript</h1>
  </body>
</html>

  Note) 실행 결과

 

 

 

3. 텍스트 관련 스타일

  1) 글자색을 지정하는 color속성

   - 16진수로 표현: #RRGGBB  

     -> #000000(검은색), #ffffff(흰색)

 

  2) hsl과 hals로 표현하는 방법

  - hue(색상), saturation(채도), lightness(명도)의 줄임만 => "hsl"

  - 위 세 가지 + alpha(불투명도) => "hsla"

 

  3) 색상을 영문명으로 표시하는 방법

  Ex) 

<hide/>
<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>상품 소개 페이지</title>
  <style>
    h1 { 
      color:#0000ff;   /* 16진수 표기법 */
    } 
    p {
      color:green;  /* 색상 이름 */
    }
    .accent {
      color:hsl(0, 100%, 50%);  /* hsl 표기법 */
      font-weight:bold;
    }
  </style>
</head>
<body>
  <h1>레드향</h1>
  <p>껍질에 붉은 빛이 돌아 <span class="accent">레드향</span>이라 불린다.</p>
  <p>레드향은 한라봉과 귤을 교배한 것으로</p>
  <p>일반 귤보다 2~3배 크고, 과육이 붉고 통통하다.</p>    
</body>
</html>

  Note) 실행 결과

 

 

  4) rgb와 rgba로 표현하는 방법

  - red. green, blue 의 줄임말

  - RGB기본형: h1 { color : rgb(0, 0, 255); } => 파란색

  - RGBA기본형: h1 {color : rgba(0, 0, 255, 0.5)} => 반투명 파란색 / 불투명도 지정

 

  

  5) 텍스트를 정렬하는 text-align 속성

  - 왼쪽 정렬(디폴트)

  - 가운데 정렬

  - 양쪽 정렬

<hide/>
<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8">
    <title>text-align</title>
    <style>
      p {
        width:600px;
        border:1px solid #222;
        padding:10px;
        margin:10px;
      }
      .center {
        text-align: center;
      }
      .justify {
        text-align: justify;
      }
    </style>
  </head>
  <body>    
    <p>껍질에 붉은 빛이 돌아 <b><big>레드향</big>(감평甘平)</b>이라 불린다. 레드향은 한라봉과 귤을 교배한 것으로 일반 귤보다 2~3배 크고, 과육이 붉고 통통하다.</p>
    <p class="center">껍질에 붉은 빛이 돌아 <b><big>레드향</big>(감평甘平)</b>이라 불린다. 레드향은 한라봉과 귤을 교배한 것으로 일반 귤보다 2~3배 크고, 과육이 붉고 통통하다.</p>
    <p class="justify">껍질에 붉은 빛이 돌아 <b><big>레드향</big>(감평甘平)</b>이라 불린다. 레드향은 한라봉과 귤을 교배한 것으로 일반 귤보다 2~3배 크고, 과육이 붉고 통통하다.</p>
  </body>
</html>

 

 

  6) 줄 간격을 조절하는 line-height

  - 보통 줄 간격은 글자 크기의 1.5 ~ 2배가 적당하다.

  - 윗 줄: 줄 간격 지정하지 않음 / 둘째 줄: 글자 크기의 0.7배 / 셋째 줄: 글자 크기의 2.5배

  - 세로로 가운데 정렬을 하려면?

    -> line-height의 속성값을 추가하여 영역 높이를 나타내는 height의 속성값과 똑같이 지정한다.

 

  Ex)

<hide/>
 .small-line {
        line-height:0.7;
      }
      .big-line {
        line-height:2.5;
      }
    </style>
  </head>
  <body>    
    <p>껍질에 붉은 빛이 돌아 레드향(감평甘平)이라 불린다. 레드향은 한라봉과 귤을 교배한 것으로 일반 귤보다 2~3배 크고, 과육이 붉고 통통하다.</p>
    <p class="small-line">껍질에 붉은 빛이 돌아 레드향(감평甘平)이라 불린다. 레드향은 한라봉과 귤을 교배한 것으로 일반 귤보다 2~3배 크고, 과육이 붉고 통통하다.</p>
    <p class="big-line">껍질에 붉은 빛이 돌아 레드향(감평甘平)이라 불린다. 레드향은 한라봉과 귤을 교배한 것으로 일반 귤보다 2~3배 크고, 과육이 붉고 통통하다.</p>

  Note) 실행 결과

 

 

  7) 텍스트의 줄을 표시하거나 없애 주는 text-decoration 속성

  - 텍스트에 밑줄을 긋거나 취소선을 표시한다. 

  - 하이퍼링크 적용하면 생기는 밑줄을 없앨 수 있다.

  Ex) 

<hide/>
<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8">
    <title>text-decoration</title>
  </head>
  <body>
    <h1>text-decoration 속성</h1>
    <p style="text-decoration:none">none</p>
    <p style="text-decoration:underline">underline</p>
    <p style="text-decoration:overline">overline</p>
    <p style="text-decoration:line-through">line through</p>
  </body>
</html>

  Note) 실행 결과

 

 

  8) 텍스트에 그림자 효과를 추가하는 text-shadow 속성

  - 기본형: text-shadow : none | <가로 거리> <세로 거리> <번짐 정도> <색상>

  - 가로거리: 양수이면 글자의 오른쪽, 음수이면 왼쪽에 그림자를 만든다.

  - 세로거리: 양수이면 아래쪽, 음수이면 위쪽에 그림자를 만든다. 

  - 번짐 정도: 그림자가 번지는 정도

  - 번짐 정도는 생략 가능

 

  Ex)

<hide/>
<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>text-shadow</title>
  <style>    
    h1 { 
      font-size:60px;
    } 
    .shadow1 {
      color:red;
      text-shadow:1px 1px black;
    }
    .shadow2 {
      text-shadow:5px 5px 3px #ffa500;
    }
    .shadow3 {
      color:#fff;
      text-shadow:7px -7px 20px #000;
    }
  </style>
</head>
<body>
  <h1 class="shadow1">HTML</h1> 
  <h1 class="shadow2">CSS</h1>
  <h1 class="shadow3">자바스크립트</h1>
</body>
</html>

 

  Note) 실행 결과

 

  9) 텍스트의 대소 문자를 변환하는 text-transform 속성

  - 영문자를 표기할 때, 텍스트의 대소 문자를 원하는 대로 바꿀 수도 있다.

  - 텍스트를 대소 문자 또는 전각 문자로 변환합니다.

  (1) none: 줄을 표시하지 않는다.

  (2) capitalize: 첫 번째 글자를 대문자로 변환한다.

  (3) uppercase: 모든 글자를 대문자로 변환한다.

  (4) lowercase: 모든 글자를 소문자로 변환한다. 

  (5) full-width: 가능한 한 모든 문자를 전각 문자로 변환한다.

    -> 전각문자: 가로, 세로 비율이 1:1인 글자 

 

 

 10) 글자 간격을 조절하는 letter-spacing, word-spacing 속성

  - letter-spacing: 글자 사이의 간격 조정

  - word-spacing: 단어와 단어 사이 간격 조정

 

 

4. 목록 스타일

  1) 불릿 모양과 번호 스타일을 지정하는 list-style-type 속성

  - disc: ●

  - circle: ○

  - square: ■

  - decimal: 1부터 시작하는 10진수

  ex) list style-type: upper-alpha; => 불릿을 대문자로 지정

 

  2) 불릿 대신 이미지를 사용하는 list-style-image 속성

  - 기본형: list-style-image: <url(이미지 파일 경로)> |  none

 

  3) 목록을 들여쓰는  list-style-position 속성

  - 불릿이나 번호의 위치를 들여쓸 수 있다.  

  - 기본형: list-syle-position : inside | outside

    ->inside: 불릿이나 번호를 기본 위치보다 안으로 들여 쓴다.

    -> outside: 기본값

 

  4) 목록 속성을 한꺼번에 표시하는 list-style 속성

  - list-style-type, list-style-image, list-style-position속성을 한꺼번에 표시할 수 있다.  

  

 

  Ex) 목록을 사용하여 세로 메뉴 만들기

  - 세로 메뉴는 목록에서 불릿을 없애고 마진과 패딩을 사용해 배열하면 된다. 

  - 불릿이 사라지고 각 항목에 마진과 패딩, 테두리가 추가되어 웹 사이트의 세로 메뉴 형태가 만들어진 것을 볼 수 있다.

<hide/>
<style>
    a {
      text-decoration:none;
    }
    nav {
      width:300px;
      margin:50px 30px;
    }
    ul {
      list-style:none;
    }
    li {
      border:1px solid #222;
      padding:20px;
      margin:5px;
    }
  </style>

  Note) 실행 결과

 

5. 표 스타일

  1) 표 제목의 위치를 정해주는 caption-side 속성

  - top: 캡션을 표 윗 부분에 표시

  - bottom: 표 아래에 표시 (기본값)

 

  2) 표에 테두리를 그려주는 border속성

  

  Ex) 표 테두리 스타일 지정하기 

  - 표 테두리 검은색: border: 1px solid black

  - 표 캡션 위치 아래로: caption-side: bottom

 

  Note) 실행 결과

 

  3) 셀 사이의 여백을 지정하는 border-spacing 속성

  - 표와 셀에 따로 테두리를 지정하면 셀과 셀 사이에 여백이 조금 생긴다.

    -> border-spacing으로 조절

  - 기본형:  border-spacing: 수평거리 수직거리ㅣ

 

 

  4) 표와 셀 테두리를 합쳐 주는  border-collapse 속성

  - collapse: 표와 셀의 테두리를 합쳐 하나로 표시한다.

  - seperate: 표와 셀의 테두리를 따로 표시한다. (기본값)

 

 

  Ex) 마무리문제 1)

  - 순서 없는 목록의 불릿 없애기

  - 줄 간격을 글자 크기의 2배 지정

  - 진하게 표시할 부분을  #ad3000으로 글자색 수정

<hide/>
<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8">
    <title>연습문제 1</title>
    <style>
			.container {
				width:500px;
				padding:10px;
				border:1px solid #ccc;
			}
			.subject {
				font-weight:700;
				font-size:larger;
				color: #ad3000
			}
			ul{
				list-style: none;
			}
			li{
				line-height: 2;
			}
    </style>
  </head>
  <body>
		<div class="container">
			<h1>최신 웹 디자인 트렌드</h1>
			<ul>
				<li><span class="subject">반응형 웹 디자인</span> - 다양한 화면 크기에 최적화하다</li>
				<li><span class="subject">플랫 디자인 </span> - 입체에서 평면으로 </li>
				<li><span class="subject">풀스크린 배경 </span> - 콘텐츠에 집중</li>
				<li><span class="subject">원 페이지 사이트 </span> - 한 페이지에 모든 내용을 담다</li>
				<li><span class="subject">패럴랙스 스크롤링 </span> - 동적인 효과로 강한 인상을!</li>
				<li><span class="subject">웹 폰트 </span> - 웹 타이포그래피를 받쳐주는 기술</li>
			</ul>
		</div>
  </body>
</html>

  Note) 실행 결과

 

 

  Ex) 마무리 문제 2)

  - 배경색 흰색으로 수정하기

  - 텍스트 기준으로 오른쪽 아래, 가로거리 3px, 세로 거리 2px 되는  위치에 5px 정도 번지는 그림자 효과를 추가한다.

  - 글자색은 검정

<hide/>
<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8">
    <title>연습문제 2</title>
    <style>
			.container {
        width:300px;
        height:70px;     
        margin:0 auto;
        background-color:#444;        
      }    
      h1 {
        text-align: center;
        line-height: 70px;
        color: #fff;
        text-shadow:3px 2px 5px #000;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <h1>웹 개발 기초</h1>
    </div>
  </body>
</html>

 

  

  Ex) 마무리 문제 3)

<hide/>
<!DOCTYPE html>
<html lang="ko">
<head>
	<meta charset="UTF-8">
	<title>연습문제 3</title>
</head>
<body>
  <table>
    <style>
      table{
        caption-side: bottom;
        border: 1px solid black;
        border-collapse: collapse;
      }
      th, td{
        border: 1px solid black;
        padding:  10px;
      }
      .heading{
        background-color: #eee;
      }
    </style>
    <caption>2019 국민 독서실태</caption>
    <col class="heading">
    <col>
    <col>
    <thead>
      <tr class = "heading">
        <th>구분</th>
        <th>성인</th>
        <th>독서자</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <th>종이책</th>
        <td>6.1권</td>
        <td>11.8권</td>
      </tr>
      <tr>
        <th>전자책</th>
        <td>1.2권</td>
        <td>7.1권</td>
      </tr>
      <tr>
        <th>오디오북</th>
        <td>0.2권</td>
        <td>5.5권</td>
      </tr>      
    </tbody>
  </table>
</body>
</html>

  Note) 실행 결과

 

 

  Ex) 마무리 문제 4)

<hide/>
<!DOCTYPE html>
<html lang="ko">
<head>
	<meta charset="UTF-8">
	<title>연습문제 4</title>
	<style>
		#container {  /* 전체 콘텐츠를 감싸는 div */
			width:650px;  /* 너비 */
			margin:0 auto;  /* 가로로 중앙에 배치 */
			padding:5px;	/* 테두리와 내용 사이의 패딩 여백 */		
		}
		#check {   /* 텍스트 부분을 감싸는 div */
			width:640px;  /* 너비 - 그림 너비 값에 맞춤 */
			border:1px solid #ccc;  /* 테두리 */
		}		
		h1 {
			color: white; /* 글자색 */
			font-size: 1em; /* 글자 크기 */
			background: #222; /* 배경색 */
			margin: 0; /* 제목과 다른 요소 간의 마진 여백 */
			padding: 10px; /* 테두리와 제목 텍스트 사이의 패딩 여백 */
		}		
		h2{
			color: #ff0000;
			font-size: 1.5em;
			text-align: center;
		}
		p{
			font-weight: bold;
			font-size: 1.2em;
			line-height: 2em;
			text-align: center;
		}
		
		.accent{
			color: #00f;
		}
		.smalltext{
			font-size:  0.7em;

		}
	</style>
</head>

<body>
	<div id="container">
		<img src="images/top.jpg" alt="가정용 꿀사과 - 흠집이 있고 약간은 못생겼지만 맛과 영양은 그대로입니다. 질좋은 사과를 저렴하게 즐겨보세요">		
		<div id="check">
			<h1>확인하세요</h1>
			<h2>주문 및 배송</h2>
			<p><span class ="accent"> 오후 2시 이전</span> 주문건은 당일 발송합니다<br>
			2시 이후 주문건은 다음날 발송합니다(주말 제외)</p>
			<hr>
			<h2>교환 및 환불</h2>
			<p>불만족시 <span class ="accent">100% 환불</span>해 드립니다<br>
			고객센터로 전화주세요</p>
			<hr>
			<h2>고객센터 </h2>
			<p>0000-0000<br>
			<span  class="smalltext">상담시간 : 오전 9시 ~ 오후 6시 (토/일, 공휴일 휴무)</span></p>
		</div>
	</div>
</body>
</html>

  Note) 실행 결과