본문 바로가기

WEB/HTML&CSS

[HTML/CSS] #13.Pseudo Selector

우리가 코딩을 하다보면 좀 더 세부적으로 엘리먼트를 선택해야 할 일이 있다. 이 때 사용하는 것이 Pseudo Selector이다. 다음의 코드를 보자.

 

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      body {
        height: 1000vh;
        margin: 50px;
      }
      div {
        width: 300px;
        height: 300px;
        background-color: wheat;
        position: relative;
      }

      div:first-child {
        background-color: red;
      }
      div:last-child {
        background-color: teal;
      }
    </style>
  </head>
  <body>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
  </body>
</html>

5개의 div블록을 만들고 맨 위에 있는 블록은 red색, 맨 아래에 있는 블록은 teal색이 되도록 Pseudo Selector를 이용해 만들어 보았다. 결과를 확인해보자.

 

원하는 대로 색깔이 바뀌었다! 물론 class나 id를 만들어서 색을 바꿔줄 수도 있겠지만 html코드를 변경해줄 필요가 없어 이 방법이 훨씬 낫다. Pseudo Selector는 종류가 엄청나게 많다. 하나 더 사용을 해보자.

 

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      body {
        height: 1000vh;
        margin: 50px;
      }
      div {
        width: 300px;
        height: 300px;
        background-color: wheat;
        position: relative;
      }

      span {
        background-color: red;
      }

      span:nth-child(2) {
        background-color: teal;
      }
    </style>
  </head>
  <body>
    <span>hello</span>
    <span>hello</span>
    <span>hello</span>
    <span>hello</span>
    <span>hello</span>
  </body>
</html>

이번에는 nth-child를 이용해 2번째 자식 엘리먼트를 선택에 세부조작을 해주었다. 참고로 괄호에 even을 쓰면 짝수번째 자식, odd를 쓰면 홀수번째 자식 모두를 선택할 수 있다. (2n이나 2n+1이라고 써도 적용된다!) 이와 같이 Pseudo Selector는 엘리먼트를 좀 더 세부적으로 선택할 수 있도록 도와주는 역할을 한다.