nth-child

:nth-child

의사 클래스 는 형제 사이에서의 순서에 따라 요소를 선택한다.

/* 목록의 두 번째 <li> 선택 */
li:nth-child(2) {
  color: lime;
}

/* 임의의 그룹에서 네 번째에 위치하는 모든 요소 선택 */
:nth-child(4n) {
  color: lime;
}

상황

<div class="testimonials">
  <div class="testimonial">
    <img
         src="imgs/testimonials/face.jpg"
         alt="face"
         class="testimonial__avatar"
         />
    <div class="testimonial__speech-bubble">
      <p>
        Lorem ipsum dolor sit, amet consectetur adipisicing elit. Ut
        perferendis numquam blanditiis sit reiciendis magni quia hic id
        minima soluta doloribus corporis vitae nemo maiores quae eum,
        asperiores ipsum alias!
      </p>
      <p class="name"><a href="www.naver.com">Ellie</a> / Samsung</p>
    </div>
  </div>
  <div class="testimonial">
    <div class="testimonial__speech-bubble">
      <p>
        Lorem ipsum dolor sit, amet consectetur adipisicing elit. Ut
        perferendis numquam blanditiis sit reiciendis magni quia hic id
        minima soluta doloribus corporis vitae nemo maiores quae eum,
        asperiores ipsum alias!
      </p>
      <p class="name"><a href="www.naver.com">Ellie</a> / Samsung</p>
    </div>
    <img
         src="imgs/testimonials/face.jpg"
         alt="face"
         class="testimonial__avatar"
         />
  </div>
</div>

testimonials 라는 컨테이너 안에는 testimonial 이 두개가 존재한다.

  • testimonials

    • testimonial

    • testimonial

여기서 우리는 첫 번째 testimonial 과 두 번째 testimonialCSS 속성을 다르게 주고 싶다.

해결

다양한 방법이 있겠지만, nth-child 을 이용해보자. oddeven 키워드를 이용해서 스타일링 하자.

.testimonial__avatar:nth-child(odd) {
  margin-right: 40px;
}

.testimonial__avatar:nth-child(even) {
  margin-left: 40px;
}

Last updated