이 선택자 그룹은 요소에 특정 속성이 있는지에 따라 요소를 선택하는 다른 방법을 제공한다.
<ul>
<li>Toy Story</li>
<li class='movie">Avengers</li>
</ul>
.movie:first-child {
font-size: 32px;
}
인 경우, movie의 부모인 ul의 첫번째 자식은 Toy Story지만, movie class가 아니므로 style이 적용되지 않는다.
2. type: nth-child(n) : n번째 자식에 style을 적용한다.(n은 함수가 될 수 있다. odd/even으로 사용 가능하다.)
3. type: first/last-of-type : 같은 type의 첫번째/마지막 자식에 모두 style을 적용한다. type: nth-of-type(n) 또한 동일하다.
4. type:not(selector) : type중 selector가 아닌 것들에 style을 적용한다. input type일때는 [selector]의 형태로 써줘야함.
5. type:link : 링크는 클릭시 색이 보라색으로 자동 변경되는데, link 선택자를 이용하면 클릭되었든 되지 않았든 style이 적용된다.
6. type:visited : 클릭된 link들에 대해 style이 적용된다.
7. input[type=type]:hover : 마우스를 올린 요소들에 대해 style이 적용된다.
8. input[type=type]:active : 마우스를 클릭한 후 떼기 전(mouseDown 상태)까지 style이 적용된다. hover, link, visited에 의해 덮어씌어진다.
9. input[type=type]:focus : 현재 focusing되고 있는 요소들에 대해 style이 적용된다. (버튼을 클릭했다가 다른 곳을 클릭하면 적용이 풀린다.)
link-visited-hover-active(LVHA) 순서로 배치하는 것이 좋다.
10. input[type=type]:enabled : 속성이 enabled인 요소들에 style이 적용된다.
11. input[type=type]:disabled : 속성이 disabled인 요소들에 style이 적용된다.
12. input[type=type]:checked : 속성이 checked인 요소들에 style이 적용된다.
<body>
<div>Toy Story</div>
<div class='movie">Avatar</div>
<div class='movie favorite">Avengers</div>
<div class='movie">Zootopia</div>
<body>
.favorite::after {
content: '✨'
}
인 경우, 아래 사진처럼 나타난다.
1. type::before : content라는 요소를 선언 블록 내에 추가해줘야 한다.
2. type::first-letter : type의 첫번째 글자에 대해 style을 적용한다.
3. type::first-line : type의 첫번째 줄에 대해 style을 적용한다. 창의 가로 길이에 따라 첫째 줄이 변화한다.
4. type::selection : 선택 영역에 대해 style을 적용한다.
selection 코드 적용시 | 결과 |
---|---|
.lorem::selection { color : blue } |
<ul id="list">
<li>Toy Story</li>
<li>Avengers</li>
<li>Avatar</li>
</ul>
<ol>
<li>Strawberry</li>
<li>Peach</li>
<li>Melon</li>
</ol>
ul li:last-of-type {
color: red;
}
<ul id="list">
<li>Toy Story
<ol>
<li>Strawberry</li>
<li>Peach</li>
<li>Melon</li>
</ol>
</li>
<li>Avengers</li>
<li>Avatar</li>
</ul>
<ol>
<li>Strawberry</li>
<li>Peach</li>
<li>Melon</li>
</ol>
#List > li:first-of-type {
color: red;
}
<div>
<p>P</p>
<code>Span code</code>
<p>P2</p>
<div>Div</div>
</div>
code ~p {
color: green;
}
위 코드에서 code ~p 이기 때문에 code뒤쪽에 있는 P2만 style이 적용된다.
4. type + selector : 인접 형제 선택자 결합. type과 인접한(바로 위/아래) 형제 중에 selector에 대해 style을 적용한다.
<div>
<p>P</p>
<span>Span</span>
<code>code</code>
<p>P2</p>
<div>Div</div>
</div>
code + div{
color: green;
}
위 코드에서 code +div 이기 때문에 code바로 위/아래에 div가 없으므로 적용되지 않을 것이다. 만약 code + p라면 아래에 적용된다.
5. type, type, type : 그룹화. code,div,span 처럼 원하는 tag들을 그룹화하여 style을 적용시킬 수 있다.
6. * : 범용 선택자. 모든 요소들에 style을 적용시킨다. p + * 라면 p 바로 아래에 있는 요소들에게 스타일을 적용시킨다. 위의 예시에서는 div, span에 적용된다.
<div class="parent">Parent
<div class="child1">child1</div>
<div class="child2">child1</div>
</div>
.parent {
color: blue;
}
.child1 {
color: initial;
}
<div class="parent">Parent
<div class="child1">child1</div>
<div class="child2">child1</div>
</div>
.parent {
color: blue;
}
.child1 {
color: red;
}
.parent * {
color: inherit
}
<div class="parent">Parent
<div class="child1">child1</div>
<div class="child2">child2</div>
</div>
.parent {
color: blue;
}
.child1 {
color: red;
}
.parent * {
color: inherit
}
.child1 {
all: unset;
}
div {
color: purple !important
}