가상 선택자, pseudo selector에 대하여 알아봅니다. 이 중에서도 오늘은 ::before 그리고 ::after 선택자는 대하여 알아보겠습니다. ::before 선택자는 다른 선택자의 뒤에 함께 쓰여 원하는 텍스트 및 스타일을 넣거나 지정할 때 사용합니다. ::after의 경우는 반대로 뒤에 추가하는 것이 이 둘의 차이점입니다.

# 가상 선택자 ::after 또는 ::before가 쓰이는 경우

아래의 경우에 가상 선택자가 사용됩니다.

  • 텍스트끼리 서로 구분할 경
  • 특수코드를 변환없이 그대로 보여줄 경우
  • 백그라운드 이미지를 해당 문구 앞 또는 뒤에 삽입하는 경우

아래는 간단한 예제입니다.


# ::after 및 ::before 사용방법 및 예제

간단한 두 가지 예제를 알아봅니다. 먼저 ::before를 사용하여 적용된 모든 엘리먼트의 앞에 '-' 기호를 추가합니다.

- CSS 코드
.test::before {
  content: '-';
}

- HTML 코드
<span>web</span>
<span class="test">Is</span>
<span class="test">Free</span>
<span class="test">Com</span>
아래는 위 코드를 실행할 경우의 결과입니다. 모든 .test 클래스의 문자 앞에 구분문자 - 기호가 생겨났습니다.
web-Is-Free-Com

아래는 두 번째 예제입니다. 이번에는 특수기호가 ::before 또는 ::after에 사용될 경우 어떻게 나타나는지 알아봅니다.

- HTML 코드
<span class="test2">특수기호</span>

- CSS 코드
.test2::after {
    content: '&nbsp;';
}

아래는 출력결과입니다. 문자 뒤에 특수기호가 변환되지 않고 그대로 표현됨
특수기호

&nbsp;는 공백으로 표현되지 않습니다. 꼭 알아두세요.


! 기타 참고사항

참고로 ,위 선택자는 익스플로러 9 이상의 거의 모든 브라우저에서 사용이 가능합니다. 만약 익스플로러 8에서 사용하시려면 :before, :after을 사용해보세요. 콜론(:) 기호를 하나 빼고 사용하시면 됩니다. 아래처럼 CSS를 바꿔서 사용하면 됩니다.
.test:before {
  content: "-";
}
.test2:after {
  content: " ";
}

IE 8 이 아니라면 일반적으로 ::before, ::after를 사용하는 점 알아두세요.