CSS 네이티브 네스팅(native nesting) > 메모

본문 바로가기
사이트 내 전체검색

메모

css CSS 네이티브 네스팅(native nesting)

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 49회 작성일 25-09-26 14:44

본문

CSS 네이티브 네스팅(native nesting)은 CSS 규칙을 다른 규칙 안에 중첩하여 작성하는 기능으로, CSS 전처리기(preprocessor) 없이도 코드를 더 간결하고 구조적으로 만들 수 있게 해줘요. 이 기능은 CSS Nesting Module에 정의되어 있으며, 현재 대부분의 최신 브라우저에서 지원하고 있어요.

네이티브 네스팅의 특징 및 사용법

기존에는 여러 선택자를 사용해 HTML의 계층 구조를 나타내려면 아래처럼 반복적으로 선택자를 작성해야 했어요.

.card {
  /* ... */
}
.card .title {
  /* ... */
}
.card .content {
  /* ... */
}
.card .button {
  /* ... */
}
네이티브 네스팅을 사용하면 부모 선택자 안에 자식 선택자를 중첩해 작성할 수 있어 코드가 훨씬 깔끔해져요.

.card {
  /* ... */
  .title {
    /* .card .title과 동일 */
  }
  .content {
    /* .card .content와 동일 */
  }
  .button {
    /* .card .button과 동일 */
  }
}

& 기호 사용

네스팅 규칙 안에서 부모 선택자를 참조할 때 & 기호를 사용해요. 이 기호는 상위 선택자를 나타내는 역할을 하며, 다음과 같은 다양한 방식으로 활용할 수 있어요.

상태 선택자: :hover, :focus 등과 같은 의사 클래스(pseudo-classes)를 부모 선택자와 결합할 때 유용해요.

.button {
  background-color: blue;
  &:hover { /* .button:hover와 동일 */
    background-color: darkblue;
  }
}
복합 선택자: 인접 형제 선택자(+)나 일반 형제 선택자(~) 등과 결합할 때 사용해요.

.item {
  /* ... */
  & + & { /* .item + .item와 동일 */
    margin-left: 10px;
  }
}

Sass/SCSS 네스팅과의 차이점

CSS 네이티브 네스팅은 Sass/SCSS와 매우 유사하지만, 몇 가지 중요한 차이점이 있어요.
태그 선택자 중첩: 네이티브 네스팅에서는 태그 선택자(예: h1, p)를 중첩할 때 & 기호를 사용해야만 정상적으로 작동해요. Sass에서는 태그 선택자를 바로 중첩할 수 있어요.


/* 네이티브 CSS */
.container {
  & h1 {
    /* ... */
  }
}

/* Sass (동일하게 작동) */
.container {
  h1 {
    /* ... */
  }
}

@media 규칙 중첩: @media 쿼리도 중첩할 수 있으며, 이 경우에도 @media 쿼리가 상위 선택자에 적용돼요.


.card {
  /* ... */
  @media (min-width: 768px) {
    /* 뷰포트 너비가 768px 이상일 때 .card에 적용 */
    flex-direction: row;
  }
}
지원 현황 네이티브 네스팅은 2023년 후반부터 크롬, 파이어폭스, 사파리 등 주요 브라우저에서 공식적으로 지원하기 시작했어요. 따라서 이제는 별도의 전처리 과정 없이도 네스팅 기능을 활용할 수 있어요. 장점은 다음과 같아요.
  • 가독성 향상: HTML 구조와 유사하게 CSS 코드를 작성할 수 있어 코드를 읽기 쉬워져요.
  • 유지보수 용이: 선택자의 반복을 줄여 수정이 필요한 경우 더 빠르게 찾고 변경할 수 있어요.
  • 전처리기 의존성 감소: 빌드 프로세스 없이도 네스팅을 사용할 수 있어 개발 워크플로우를 간소화할 수 있어요.

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : 티로그 / 대표 : 김태규
주소 :부산광역시 수영구 광안로7번길 22 창성빌딩 3층
사업자 등록번호 : 617-86-10993
전화 : 051-325-6700 팩스 : 051-325-5665
통신판매업신고번호 : 제 2013-부산수영-0167 호
개인정보관리책임자 : 손승목

  • 게시물이 없습니다.

접속자집계

오늘
1,000
어제
920
최대
4,387
전체
438,706
Copyright © 소유하신 도메인. All rights reserved.