속성 선택자
[속성] | 해당 속성이 정의된 모든 태그를 값에 상관 없이 선택함 |
[속성=값] | 정의된 속성과 값이 동일한 태그를 선택함 |
[속성~=값] | 공백으로 구분된 속성값 리스트 중 하나가 주어진 값과 동일한 태그를 선택 |
[속성|=값] | 해당 값과 동일하거나, 주어진 값으로 시작하되 하이픈(-) 기호로 이어지는 값을 가진 태그를 선택 |
[속성^=값] | 속성값이 주어진 값으로 시작하는 태그를 선택 |
[속성$=값] | 속성값이 주어진 값으로 끝나는 태그를 선택 |
[속성*=값] | 속성값에 주어진 값을 부분 문자열로 가지고 있는 태그를 선택 |
이벤트 가상 선택자
: link {} | 웹 문서에서 사용자가 방문하지 않았던 링크를 표시함 |
: visited {} | 웹 문서에서 사용자가 방문한 링크를 표시함 |
: active {} | 웹 문서에서 사용자가 링크를 클릭하는 순간을 표시함 |
: hover {} | 웹 문서에서 사용자가 링크에 마우스 포인터를 올리는 순간을 표시함 |
: focus {} | 해당 요소에 초점이 맞춰졌을 때 적용 |
구조적 가상 선택자
: root | 문서의 최상위 태그(html)를 선택함 |
: nth-child(n) | 앞에서부터 지정된 순서와 일치하는 태그를 선택함 (선택하고자 하는 태그를 제외한 다른 태그도 순서에 포함되며 n은 수열을 나타냄) |
: nth-last-child(n) | 뒤에서부터 지정된 순서와 일치하는 태그를 선택함 (선택하고자 하는 태그를 제외한 다른 태그도 순서에 포함되며 n은 수열을 나타냄) |
: nth-of-type(n) | 앞에서부터 지정된 순서와 일치하는 태그를 선택함 (선택하고자 하는 태그만 순서에 포함되며 n은 수열을 나타냄) |
: nth-last-of-type(n) | 뒤에서부터 지정된 순서와 일치하는 태그를 선택함 (선택하고자 하는 태그만 순서에 포함되며 n은 수열을 나타냄) |
: first-child | 지정된 태그가 첫 번째면 선택함 (선택하고자 하는 태그를 제외한 다른 태그도 순서에 포함) |
: last-child | 지정된 태그가 마지막이라면 선택함 (선택하고자 하는 태그를 제외한 다른 태그도 순서에 포함) |
: first-of-type | 지정된 태그 중 첫 번째 태그를 선택함 (선택하고자 하는 태그만 순서에 포함) |
: last-of-type | 지정된 태그 중 마지막 태그를 선택함 (선택하고자 하는 태그만 순서에 포함) |
: only-child | 지정된 태그가 유일한 자식이면 선택함 (다른 태그가 포함되어 있다면 선택하지 않음) |
: only-of-type | 지정된 태그가 유일한 타입이면 선택함 (다른 태그가 포함되어 있어도 해당 태그가 유일하면 선택함) |
: empty | 텍스트 및 공백을 포함하여 자식 요소가 없는 태그를 선택함 |
기타 가상 선택자
언어 선택자 | : lang(ko) | HTML lang 속성값이 'ko'로 지정된 태그를 선택함 |
부정 선택자 | : not(x) | x가 아닌 태그를 선택함 |
목적 선택자 | : target | 태그의 URL이 요청되면 선택함 |
가상 엘리먼트 선택자 | :: first-line | 태그의 첫 번째 라인을 선택함 |
:: first-letter | 태그의 첫 번째 문자를 선택함 | |
:: before | 태그의 시작 지점에 생성된 태그를 선택함 | |
:: after | 태그의 끝 지점에 생성된 태그를 선택함 |
조합 선택자
※ 기존의 여러 선택자를 '복합적' 으로 조합하는 방법
후손 선택자 | 선택자A 선택자B | 선택자B가 선택자 A에 반드시 포함되어 있을 경우에 선택함 |
자손 선택자 | 선택자A > 선택자B | 부모 선택자A의 직계 자손인 선택자B를 선택함 |
인접 형제 선택자 | 선택자A + 선택자B | 선택자A 바로 다음에 위치한 선택자 B를 선택함 |
일반 형제 선택자 | 선택자A ~ 선택자B | 선택자A 뒤에 인접하여 나타나는 모든 선택자 B를 선택함 |
그룹 선택자 | 선택자A, 선택자B | 선택자A와 선택자B를 모두 선택함 |
선택자 연습용 미니게임 바로가기(CSS Diner) ▶ https://flukeout.github.io/
선택자 관련 내용의 공부는 CSS Diner 게임으로 복습하는게 괜찮았던 것 같다.
아래는 오답노트 겸 전 레벨 정답을 적어두도록 하겠다.
Level1 plate
- 쉽다, <plate> 태그를 선택하는 문제.
Level2 bento
- 접시와 도시락이 나란히 있다, 여기서 도시락을 고르는 문제. 1레벨과 동일하다.
Level3 #fancy
- 접시 두개 중 장식이 된 접시를 고르는 문제. 장식된 접시는 fancy라는 ID값을 가지고 있으니 #으로 해당 ID값을 입력하면 된다.
Level4 plate apple
- 반드시 접시 위에 있는 사과만 선택해야 하기 때문에 후손 선택자를 이용하면 된다.
Level5 plate#fancy pickle 또는 #fancy pickle
- 반드시 꾸며진 접시 위에 있는 피클을 선택해야 하기 때문에 후손 선택자를 이용하면 되는데 '꾸며진 접시' 값을 입력해도 되고, 해당 ID는 고유의 값이기 때문에 '꾸며진' 값만 주어도 문제 없다.
Level6 .small
- 클래스 값을 입력하는 문제, 사과들 중에서도 '작은' 클래스를 가진 사과만 선택하면 되기 때문에 .을 찍고 선택하고자 하는 클래스 명을 입력하면 된다.
Level7 orange.small
- 오렌지들 중에서도 작은 오렌지만 골라야 하는 문제, <orange> 태그와 함께 해당 클래스 명도 공백없이 입력해주면 small 클래스 값을 가진 오렌지만 선택할 수 있다.
Level8 bento orange.small
- 도시락 위에 있는 오렌지들 중에서도 작은 클래스를 가진 오렌지를 고르는 문제, 후손 선택자를 이용하면 간단하다.
Level9 plate, bento
- <plate>와 <bento>만 선택하면 된다. 그룹 선택자를 통해 해결하자.
Level10 *
- 모든 오브젝트가 흔들거리고 있다, *을 써서 모두 선택하면 된다.
Level11 plate *
- 큰 사과, 작은 오렌지, 그리고 피클이 선택해달라 시위하고 있다. 공통점을 찾아 보자면 모두 접시 위에 있으므로 부모인 접시 위에 있는 모든 채소를 선택하면 되겠다. 다만 종류가 다양하니 후손 선택자로 공백에 유의하며 모든 객체 선택인 *을 써주면 된다.
Level12 plate+apple
- 같은 형제인 값이 다른 사과 둘의 공통점을 보아하니 모두 접시 옆에 위치해 있다. 인접 형제 선택자로 옆의 사과만 골라내면 된다.
Level13 bento~pickle
- 많은 피클 중에서 도시락 옆에 위치한 피클 두 개만 골라내야 한다. 해당 태그는 어디에 속한 태그가 아닌 도시락과 같은 형제이니 일반 형제 선택자를 사용하면 된다. 그 뒤로 나열된 피클들은 모두 접시라는 부모를 가지고 있기 때문에 같은 형제가 아니라서 선택되지 않는다.
Level14 plate>apple
- 접시 위에 있는 사과가 한 개 뿐이라고 일반적인 후손 선택자를 쓰면 왼쪽에 위치한 사과도 함께 흔들리게 된다. 후손 선택자는 말 그대로 자손의 후손도 포함되기 때문에 여기서 쓸 수 없고, 자손 선택자를 써서 골라줘야 한다.
Level15 orange:first-child
- 오렌지 세 개가 접시에 나란히 올라 있는데 그 중에서 첫 번째를 골라야 한다. first-child 선택자를 쓰면 되지만 이 방법은 만약 다른 접시에도 오렌지가 있다면 그 아이도 함께 선택되니 유의하자.
Level16 plate *:only-child
- 접시 위에 외동인 사과와 피클이 있다. 하지만 옆 집에 사는 도시락에도 피클이 외동으로 있으니 단순 그룹 선택자로 하나하나 지정하는 방법은 안되고, 후손 선택자를 사용해 포괄적으로 지정하면 된다. 접시 위에 있는 후손이 외동일 경우에 선택해달라는 의미이다.
'아이티에듀넷' 카테고리의 다른 글
2024-07-29 :: 006 HTML의 구조 분석 연습 ① (2) | 2024.07.29 |
---|---|
2024-07-26 :: 005 애니메이션 (0) | 2024.07.26 |
2024-07-25 :: 004 글꼴 및 레이아웃 관련 (0) | 2024.07.25 |
2024-07-23 :: 002 공간 분할 태그 및 CSS 기초 (0) | 2024.07.23 |
2024-07-22 :: 001 HTML 태그 정리 (5) | 2024.07.22 |