본문 바로가기

Programming/HTML+CSS

[CSS] 7. 가상 클래스와 가상 요소(3) - 구조 가상 클래스 2

CSS3 logo image

 

 

 

앞서 살펴본 구조 가상 클래스와 관련된 내용을 계속해서 살펴보도록 하겠습니다. 

 

 

 

[CSS] 7. 가상 클래스와 가상 요소(3) - 구조 가상 클래스 1

이번에는 구조 가상 클래스에 대해서 살펴보도록 하겠습니다. 일단, '구조 가상 클래스'의 정의에 대해서 간단하게라도 살펴봐야 하겠죠? 구조 가상 클래스라 함은, 웹 문서의 전체적인 구조를

nozeroslope.tistory.com

 

 

○ 가상 요소

 

가상 클래스를 통해서는, 웹 문서의 여러 가지 요소 중에서 특정한 요소를 선택할 수 있었습니다. 가상 요소는 비슷해 보이지만 그 개념과 활용이 조금 다르죠. 가상 요소는 불필요한 태그를 적용하지 않아도, 특정한 부분에 스타일을 적용해 꾸밀 수 있도록 하고자 사용되는 것입니다. 

 

개념이 조금 복잡하죠? 대표적으로 아래의 두 가지 경우가 있습니다. 두 가지 대표적인 경우를 살펴보면서 가상 요소의 활용 방식을 살펴보겠습니다. 일단 가상 요소들은 가상 클래스와의 구별을 위해 '::'를 붙여서 사용하게 됩니다. 

 

 

(1) ::first-line / ::first-letter 요소

 

::first-line, ::first-letter 요소를 사용하면 지정한 요소의 첫 번째 줄 or 첫 번째 글자에 스타일을 적용하게 됩니다. 참고로 ::first-letter의 경우 적용되는 요소의 첫 번째 글자에 스타일을 적용하게 되는데 첫 번째 글자가 반드시 첫 번째 줄에 있어야 한다는 전제 조건이 있습니다. 만일 어떤 태그 안에 <br> 태그가 있어서 첫 번째 글자가 두 번째 줄에 있다고 가정하게 되면, 이런 경우는 적용되지 않습니다.

 

(2) ::before / ::after 요소

 

::before와 ::after를 사용하면, 해당하는 요소의 앞부분 혹은 뒷부분에 스타일을 적용하게 됩니다. 이를 통해서 요소의 앞이나 뒤에 이미지, 텍스트 등을 추가하게 됩니다. 아래의 예시를 보면 특정 텍스트 뒤에 [NEW] 표시를 붙이게 되는데, 여기서 ::after를 사용했습니다. 

 

<head>
    <style>
    /* 생략*/
      li.new::after {
        content:"NEW!!";
        font-size:x-small;
        padding:2px 4px;
        margin: 0 10px;
        border-radius:2px;
        background:#f00;
        color:#fff;
      }
    </style>
</head>

/* 생략 */

<body>
  <div class="container">
    <h1>제품 목록</h1>
    <ul>
      <li class="new">제품 A</li>
      <li>제품 B</li>
      <li>제품 C</li>
      <li class="new">제품 D</li>
    </ul>
  </div>
</body>