Link Search Menu Expand Document

Pseudo Class

Table of contents

  1. Syntax
  2. Pseudo-class Selectors Features
  3. Pseudo-class Selectors
    1. :first-child
    2. :last-child
    3. :lang
    4. Other Pseudo Classes
  4. Useage of Pseudo-selector
    1. Anchor

Pseudo-class Selectors Basic

어떤 상황이 발생했을때만 적용하는 셀렉터

Syntax

selector:pseudo-class {
  property: value;
}

Pseudo-class Selectors Features

▸ 기존 클래스와 섞어서 사용할 수 있음

▸ not case-sensitive

  .highlight:hover {
    color: #ff0000;
  }

  ...

  p {
    display: none;
    background-color: yellow;
    padding: 20px;
  }

  div:hover p {
    display: block;
  }

Pseudo-class Selectors

:first-child

선택한 요소의 첫번째에 위치한 요소, 부모의 ~자식 고르기

따라서 body태그도 부모라는걸 잊으면 안됨

또한 다른 부모안에 있는 p태그가 있다면 두개 이상 선택된다

/*부모의 p자식 고르기*/
p:first-child {
  color: blue;
}

/*p가 여러개 있다면 여러개의 첫번째 요소*/
p i:first-child {
  color: blue;
}

/*첫번째 p의 i 자손들 모두 선택*/
p:first-child i {
  color: blue;
}

!Note

  • div p:first-child

    만약 div의 첫번째 자식이 p가 아니라면, p:first-child는 성립되지 않음.

    대안책으로 :first-of-type을 사용

:last-child

선택한 요소의 마지막에 위치한 요소, 자식중 마지막 자식 ~ 고르기

tr:first-child{background: lightgreen}

tr:last-child{background: lightpink}

tr:last-child td:last-child{background: purple}

tr:first-child td:first-child{background: red}

td:first-child{background: lightblue}

td:last-child{background: lightyellow}

td:nth-child(2){background: yellow}

td:nth-last-child(2){background: blue}

td:nth-last-of-type(1){background: green}

:lang

special rules for different languages

q:lang(no) {
  quotes: "~" "~";
}
<p>Some text <q lang="no">A quote in a paragraph</q> Some text.</p>

<!-- 결과물로 ~A quote in a paragraph~ 으로 나옴-->

Other Pseudo Classes

selectorshapedescription
:activea:active누르는 순간(active) 발생되는 행동
:linka:link방문하지 않는 링크
:hovera:hoverhover될 시 발생되는 행동
:checkedinput:checkedinput 태그가 체크될 시 발생되는 행동
:emptyp:empty아무것도 쓰이지 않은 빈 태그를 고름, hr같은 태그들도 가능
:first-of-typep:first-of-type자식중 ~한 타입을 가지고 있는 첫번째 태그 고르기
:last-of-typep:last-of-type자식중 ~한 타입을 가지고 있는 마지막 태그 고르기
:nth-of-type(n)p:nth-of-type(2)자식중 ~한 타입을 가지고 있는 n번째 고르기
:nth-last-of-type(n)p:nth-last-of-type(2)자식중 ~한 타입을 가지고 있는 마지막에서 n번째 고르기
:nth-child(n)p:nth-child(2)n번째 ~ 자식 고르기
:nth-last-child(n)p:nth-last-child(2)마지막에서 n번째 ~ 자식 고르기
:only-of-typep:only-of-type외동 ~ 자식 고르기
:only-childp:only-child외동 ~ 자식 고르기
:in-rangeinput:in-range특정한 범위 안에 값이 존재할때 발생되는 행동
:out-of-rangeinput:out-of-range특정한 범위 밖에 값이 존재할때 발생되는 행동
:focusinput:focusinput 태그가 focus 될 때 발생되는 행동
:enabledinput:enabled사용되고 있는 input 태그 고르기
:disabledinput:disableddisabled 된 input 태그 고르기
:validinput:valid유효한 값이 존재할 때 발생되는 행동
:invalidinput:invalid유효하지 않은 값이 존재할 때 발생되는 행동
:optionalinput:optional선택할 수 있는(=not required) input 태그인경우 고르기
:read-onlyinput:read-onlyreadonly값이 있는 input tag 고르기
:read-writeinput:read-writereadable, writeable인 태그 고르기 (=readonly값이 없는)
:requiredinput:requiredrequired값이 있는 input tag 고르기
:lang(language)p:lang(it)lang=”it”인 attribute를 가지고 있는 tag를 고름
:not(selector):not(p)selector(p)가 아닌 모든 태그 고르기
:rootrootdocument’s root 태그 고르기 = html element
:target#news:target북마크 걸려있는 태그 고르기

→ n번째에 odd나 even 사용가능함

! nth-child와 nth-of-type 차이점

둘다 같은 형식이고, (2n-1)인데

첫번째 row 는 nth-child(2n-1)이라 세번째 div위치에 span이 자리잡아서 선택 불가

두번째 row는 div:nth-of-type(2n-1)이라 네번째 div가 세번째 div라서 이런 결과가 나옴

.div:nth-child(2n-1){
    background: pink;
}
        
.div:nth-of-type(2n-1){
    background: pink;
}

--
html

<div>
    <div></div>
    <div></div>
    <span></span>
    <div></div>
    <div></div>
</div>  

Useage of Pseudo-selector

Anchor

a 태그 가상선택자 사용법

→ 아래 순서대로 사용해야 함

/* unvisited link */
a:link {
  color: #FF0000;
}

/* visited link */
a:visited {
  color: #00FF00;
}

/* mouse over link */
a:hover {
  color: #FF00FF;
}

/* selected link */
a:active {
  color: #0000FF;
}

!사용 순서

a:hover는 a:link와 a:visited 뒤에 와야하고

a:active는 a:hover뒤에 와야함


이 웹사이트는 jekyll로 제작되었습니다. Patrick Marsceill, Distributed by an MIT license.