TIL 👩🏻‍💻

TIL : CSS Selector

heesue 2021. 3. 20. 23:46

이미 CSS TIL을 작성할 때 기본적인 셀렉터로 #과 .에 대해 다뤘었다. 그러나 이건 정말 기본적인 셀렉터이고 twittler 목업을 구현하면서 배운 셀렉터에 대해 더 다뤄보려고 한다.


전체 셀렉터

* {}
//자식 셀렉터에도 사용할 수 있다.

Tag 셀렉터

A, B {}

id 셀렉터

#idname {}

class 셀렉터

.classname {}

attribute 셀렉터 (참고)

A [attr] //특정 속성을 갖는 모든 요소 선택
A [attr=value] //지정값과 속성값이 일치하는 모든 요소 선택
A [attr~=value] //띄어쓰기로 구분되었을 때, 〃
A [attr|=value] //하이픈(-)으로 구분되었을 떄, 〃
A [attr^=value] //속성값 중 지정값으로 시작하는 모든 요소 선택
A [attr$=value] //속성값 중 지정값으로 끝나는 모든 요소 선택
A [attr*=value] //속성값 중 지정값을 포함하는 모든 요소 선택

후손 셀렉터 : 자식, 손자, 그 이후 후손 포함

A B {}

자식 셀렉터 : 직계 자식만 포함

A > B {}

인접 형제 셀렉터 : 같은 부모를 가지고, A 바로 뒤에 오는 B에만 적용

A + B {}

형제 셀렉터 : 같은 부모를 가지고, A 뒤에 오는 B에 적용 (바로 뒤에 올 필요 X)

A ~ B {}

가상 클래스 / 의사 클래스 : 어떤 상태를 지정

a:link { } //방문 전 링크
a:visited { } //방문 후 링크
a:hover { } //마우스를 위에 올린 상태
a:active { } //마우스로 클릭한 상태
a:focus { } //요소에 초점이 맞춰진 상태

요소 상태 셀렉터

인접 형제 셀렉터인 +를 합쳐 사용할 수 있다.
input:checked + span { } //checked 상태
input:enabled + span { } //enabled(선택, 클릭, 입력, 포커스 가능) 상태
input:disabled + span { } //disabled(〃 불가능) 상태

구조 가상 클래스 셀렉터 (참고) : 다른 요소와의 상대적 위치에 따라 설정

p:first-child { }
ul > li:last-child { }
ul > li:nth-child(2n) { }
section > p:nth-child(2n+1) { }
ul > li:first-child { }
li:last-child { }
div > div:nth-child(4) { }
div:nth-last-child(2) { }
section > p:nth-last-child(2n + 1) { }
p:first-of-type { }
div:last-of-type { }
ul:nth-of-type(2) { }
p:nth-last-of-type(1) { }

부정 셀렉터 : B가 아닌 모든 A의 요소에 적용

A:not(B) {} //B에는 다른 부정선택자나, 가상 요소를 넣을 수 없다.

정합성 확인 셀렉터

input[type="text"]:valid { }
input[type="text"]:invalid { }