본문 바로가기
제가 쓴 책/HTML5, CSS3 and JavaScript

7. 텍스트(Text)

by edupicker(체르니) 2013. 8. 4.

7. 텍스트(Text)


CSS3에서 HTML 요소의 내용(content)에 해당하는 부분에 오는 텍스트에 적용할 수 있는 다양한 속성들에 대해서 표준화가 진행중입니다.
현재 CSS3에 대한 최신 버전은 “http://www.w3.org/TR/css3-text/”에서 확인할 수 있으며 2012 8 14일날 개정되었으며 여기에는 텍스트에 대한 간단한 대소문자 변형(Tranforming)부터 시작해서 긴 텍스트에 대한 줄 바꿈, 공백은 어떻게 처리할 수 있는지 명시하고 있습니다. 또한 기본적인 정렬이나 텍스트에 밑줄을 긋거나 그림자 효과 같은 재미난 속성들도 이용할 수 있습니다.
가장 기본적인 대소문자 변형부터 알아봅니다.



7.1 대소문자로 변형(Transforming)하기


text-transform 속성을 이용하면 HTML5의 특정 요소(Element)의 내용(content) 중 텍스트에 대해서 그 안에 포함된 단어의 첫 글자 혹은 전체 텍스트에 대해서 대, 소문자로 변형할 수 있으며 그 형식은 다음과 같습니다.


selector { text-transform : 변형값 }


기존 텍스트가 변형되는 형태는 다음과 같은 변형값들을 이용하면 됩니다.


변형값

의미

none

아무런 변화 없음

capitalize

해당 문장 내 포함된 단어의 첫 문자를 대문자로 변형

uppercase

해당 문장의 모든 문자를 대문자로 변형

lowercase

해당 문장의 모든 문자를 소문자로 변형


이외에도 “full-width”, “full-size-kana” 값이 변형값으로 올 수 있지만 각각 Latin 언어나 일본어와 관련된 부분이므로 이 책의 범위를 벗어나는 부분이므로 설명을 생략합니다.
간단한 예제를 하나 해볼까요? 메모장을 열어서 다음과 같이 코드를 작성합니다.


<!DOCTYPE HTML>
<html>
<head>
  <title>text-transform
예제</title>
  <style>   
    p#none{ font-family: "Century Gothic"; text-transform: none }
    p#capitalize{ font-family: "Century Gothic"; text-transform: capitalize}
    p#uppercase{ font-family: "Century Gothic"; text-transform: uppercase }
    p#lowercase{ font-family: "Century Gothic"; text-transform: lowercase}
  </style>
</head>
<body>
  <p id="none">time and tide wait for no man.</p>
  <p id="capitalize">time and tide wait for no man.</p>
  <p id="uppercase">time and tide wait for no man.</p>
  <p id="lowercase">time and tide wait for no man.</p>
</body>
</html>

“text-transformEx.html”로 저장합니다. Firefox를 이용하여 보면 표에서 설명한 대로 변형값이 적용되어 다음과 같이 나타납니다.



7.2 white-space 속성을 이용한 공백처리하기


white-space
속성은 요소(element)안의 공백 처리를 어떻게 할 것인지를 설정해주는 속성으로 다음과 같은 형식을 이용합니다.


selector { white-space : 속성값 }


white-space 속성값으로는 “normal”, “pre”, “nowrap”, “pre-wrap”, “pre-line”, “inherit” 값이 올 수 있으며 해당 속성값이 설정되었을 때 어떻게 동작하는지를 표로 정리하면 다음과 같습니다.


속성값

기능

normal

텍스트가 한 줄의 길이가 넘어갈 정도로 길 경우 자동적으로 다음 줄로 나머지 텍스트를 출력. 기본값

nowrap

다수의 공백은 하나의 공백으로 축소되고 텍스트가 한 줄의 길이가 넘어갈 정도로 길더라도 자동적으로 줄바꿈되지 않음

pre

공백은 보존되고 자동 줄바꿈이 되지 않음

pre-wrap

공백은 보존되고 텍스트는 줄바꿈되며 결과는 normal과 같게 나타남

pre-line

다수의 공백은 하나의 공백으로 축소되고 필요에 따라 자동 줄바꿈됨


메모장을 열어서 다음과 같이 코드를 작성해봅니다.

<!DOCTYPE HTML>
<html>
<head>
  <title>white-space
예제</title>
  <style>    
    .outer{width:200px; color:red; background-color:yellow;}
  </style>
</head>
<body>
  <div class="outer">
    <p>
알이       새근새근 숨쉰다는 것을 모르는    이들은 도무지 ''라는 존재를 이해할 수
        
없을 것이다.      알을 깨고 바깥으로 나와야 생명이 탄생하는 것은 아니다.  
             -
안도현의 '연어 이야기' 중에서
    </p>

  </div>
</body>
</html>


div 요소 안에 p 요소를 작성하고 p 요소의 내용(content)로 상당히 긴 문장을 위와 같이 입력합니다. 그리고 차이점을 이해하기 위해서 div 요소의 스타일을 위와 같이 너비(width) 200px로 배경색은 노랑색, 글꼴색은 빨강색으로 설정합니다. “white-spaceEx.html”로 저장한 후 브라우저를 이용하여 연결해보면 다음과 같이 다수의 공백은 하나의 공백으로 축소되고 자동적으로 줄바꿈(warp)이 되었음을 알 수 있습니다.



이제 위 코드에서 <style> … </style> 부분에 “p{white-space:nowrap;}“ 한 줄을 추가합니다. 그리고 다시 브라우저를 통해 보면 다음과 같이 다수의 공백은 하나의 공백으로 축소되고 자동적으로 줄바꿈이 되지 않은 형태로 나타납니다.




이제 방금 전 추가한 “p{white-space:nowrap;}“ 코드를 “p{white-space:pre;}“로 수정하고 저장한 후 브라우저를 통해 보면 다음과 같이 다수의 공백이 입력한대로 보존(Preserve)되고 줄바꿈이 발생하지 않습니다.



다른 속성값들도 여러분들이 바꿔가면서 그 결과를 확인해보기 바랍니다.





- 본 저작물은 본인이 2011년 상반기부터 2012년 여름 즈음까지 도서 출판을 목적으로 약 470 페이지(A4, 폰트 10)으로 작성한 원본 중 CSS3에 대한 부분을 그대로를 공개하는 것으로 본 저작물에 대한 모든 권리는 본인(원철연)에서 있음을 알립니다.
개인적인 학습 목적으로 사용을 허용하며 온오프라인의 베포나 펌상업적인 용도의 사용은 삼가해주시기 바랍니다. 끝으로 학교나 비영리 단체에서의 경우 본 저작물을 비상업적인 용도로 활용하고자 할 경우 연락처를 비밀댓글로 남겨주시면 연락드리겠습니다.