[2022.04.15] CSS 가상 요소/클래스 선택자 (pseudo-element/pseudo-class)

REASON·2022년 4월 15일
1

STUDY

목록 보기
16/127
post-thumbnail

pseudo-class & pseudo-element

CSS를 사용하다보면 심심치 않게 가상 요소 선택자나 가상 클래스 선택자를 사용하는 상황이 생기곤 한다.
가상 요소 선택자와 가상 클래스 선택자는 어떤 종류가 있으며 어떤 차이점이 있을까 ?

1. 가상 클래스 선택자 (pseudo-class)

먼저, 가상 클래스 선택자(pseudo-class)는 HTML 문서에 작성된 요소에 가상의 클래스를 만들어 부착할 수 있다.
가상 클래스 선택자의 종류는 다음과 같다.

index가상클래스내용
1:active<a>,<button>과 함께 사용하는 경우가 많다.
사용자가 활성화한 요소를 나타낸다. (마우스로 요소 클릭 시)
2:only-child형제가 없는 요소를 선택할 때 사용된다.
:first-child:last-child 와 동일하다.
3:hover마우스 커서가 올라가 있을 때(마우스 오버)선택된다.
:link, :visited, :active를 함께 쓴다면 css작성시 순서에 주의해야 한다.
4:only-of-type같은 유형의 요소 형제가 없을 때 적용된다.
5:checked요소를 선택했거나
radio, checkbox의 옵션에 체크한 경우 활성화된다.
6:invalidinput이나 form 태그 등의 유효성을 검사할 때 사용된다.
7:out-of-rangeinput박스에 설정한 max값을 초과하는 등 한계치를 벗어났을 때 사용된다.
8:nth-child()형제의 순서에 따라 요소를 선택한다.
()안에는 인덱스(1이상)외에도 odd(홀수), even(짝수)번째, An+B 등의 함수식도 적용할 수 있다.
9focusinput 태그 등의 입력칸이 포커스되었을 때 사용된다.
포커스 받은 요소만 해당되므로 자식이 포커스를 받았을 때 사용하려면 :focus-within을 사용하면 된다.
10:linkhref 속성을 가진 태그 중, 아직 방문하지 않은 요소에 사용하면 된다.
:visited, :hover, :active와 함께 사용한다면 css 작성 순서에 주의해야 한다.
11:visited사용자가 방문한 적있는 링크에 해당된다.
:link, :hover, :active와 함께 사용한다면 css 작성 순서에 주의해야한다.

더 많은 가상 클래스 선택자 확인하기

LVHA 순서

가상 클래스를 사용하여 링크 속성이 있는 요소에 css를 적용하고 싶을 때 순서를 지켜야 한다.
:link ▶ :visited ▶ :hover ▶ :active
순서이다. 이 순서가 어긋나면 css가 제대로 동작하지 않을 수 있으니 꼭 순서를 지켜서 작성하도록 하자.

자주 사용되는 가상 클래스 선택자 사용해보기


2. 가상 요소 선택자 (pseudo-element)

index가상요소내용
1::after::after가 선택된 요소의 맨 마지막 자식으로 요소를 하나 생성한다.
2::before::before가 선택된 요소의 맨 첫번째 자식으로 요소를 하나 생성한다.
3::first-letter선택한 요소의 첫 번째 글자에 스타일이 적용된다.
4::first-line선택한 요소의 첫 번째 줄애 스타일이 적용된다.
5::selection선택한 요소의 하이라이트 스타일을 적용한다.
color, background, text-decoration과 그 관련 속성, text-shadow와 같은 특정 속성에만 적용된다.

더 많은 가상 요소 선택자 확인하기


가상 요소 선택자 중에 가장 흔히 사용되는 ::after를 사용하여 박스를 디자인해보았다.

그렇다면, 가상 클래스 선택자와 가상 요소 선택자의 차이는 무엇일까?

  1. 가상 클래스는 특정 상태일 때 스타일을 적용하는 것이고 가상 요소 선택자는 특정 상태가 아니더라도 스타일을 적용할 수 있다.

  2. 가상 클래스는 기존에 존재하는 요소를 선택하는 것이고 가상 요소는 기존에 존재하지 않는 가상의 요소를 만들어 선택하는 것이다.

  3. 가상 클래스는 콜론을 1개 붙인 :hover와 같은 형태로, 가상 요소는 콜론을 2개 붙인 ::first-letter로 작성한다. 하지만, 과거 W3C 명세에서는 구별을 두지 않았다는 이유로 대부분의 브라우저가 콜론의 개수와 관계없이 모두 지원한다고 한다.


참고 자료
MDN 의사 클래스
MDN 의사 요소

0개의 댓글

관련 채용 정보