Fork Coding
Blog/January 15, 2026

2026년 모던 CSS 테크닉 총정리

2026년 모던 CSS 테크닉 총정리

Container Queries, CSS Nesting, View Transitions 등 2026년에 알아야 할 최신 CSS 기술들을 실전 예제와 함께 정리합니다.

Fork Coding·2026년 1월 15일
CSSFrontendWeb Development

CSS의 르네상스

최근 몇 년간 CSS는 역사상 가장 빠른 진화를 겪고 있습니다. 과거에는 전처리기(Sass, Less)나 CSS-in-JS 없이는 불가능했던 기능들이 이제 네이티브 CSS로 가능해졌습니다. 2026년 현재, 모든 주요 브라우저에서 지원하는 핵심 기술들을 살펴봅니다.

1. CSS Nesting

더 이상 Sass가 필요 없습니다. 네이티브 CSS 중첩이 모든 브라우저에서 지원됩니다.

/* 네이티브 CSS Nesting */
.card {
  padding: 1.5rem;
  border-radius: 1rem;
  background: white;

  & .title {
    font-size: 1.25rem;
    font-weight: 700;

    &:hover {
      color: var(--primary);
    }
  }

  & .description {
    color: oklch(0.5 0 0);
    line-height: 1.6;
  }

  @media (width < 768px) {
    padding: 1rem;
  }
}

2. Container Queries

반응형 디자인의 게임 체인저. 뷰포트가 아닌 컨테이너 크기에 따라 스타일을 변경합니다.

/* 컨테이너 선언 */
.sidebar {
  container-type: inline-size;
  container-name: sidebar;
}

/* 컨테이너 쿼리 */
@container sidebar (width > 300px) {
  .widget {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
  }
}

@container sidebar (width <= 300px) {
  .widget {
    display: flex;
    flex-direction: column;
  }
}

실전 활용: 카드 컴포넌트

.card-container {
  container-type: inline-size;
}

.card {
  display: grid;
  gap: 1rem;
}

/* 좁은 컨테이너: 세로 레이아웃 */
@container (width < 400px) {
  .card {
    grid-template-columns: 1fr;
  }

  .card-image {
    aspect-ratio: 16 / 9;
  }
}

/* 넓은 컨테이너: 가로 레이아웃 */
@container (width >= 400px) {
  .card {
    grid-template-columns: 200px 1fr;
  }

  .card-image {
    aspect-ratio: 1;
  }
}

3. View Transitions API

페이지 전환 애니메이션을 CSS만으로 구현할 수 있습니다.

/* 기본 페이지 전환 */
@view-transition {
  navigation: auto;
}

/* 전환 애니메이션 커스터마이징 */
::view-transition-old(root) {
  animation: fade-out 0.3s ease-out;
}

::view-transition-new(root) {
  animation: fade-in 0.3s ease-in;
}

/* 특정 요소에 고유 전환 효과 */
.hero-image {
  view-transition-name: hero;
}

::view-transition-old(hero) {
  animation: scale-down 0.4s ease-out;
}

::view-transition-new(hero) {
  animation: scale-up 0.4s ease-in;
}

4. OKLCh 컬러 스페이스

인간의 시각에 더 가까운 색 공간으로, 일관된 밝기와 채도 조절이 가능합니다.

:root {
  /* OKLCh: Lightness, Chroma, Hue */
  --primary: oklch(0.6 0.2 260);
  --primary-light: oklch(0.8 0.15 260);
  --primary-dark: oklch(0.4 0.25 260);

  /* 같은 밝기의 다른 색상 - 시각적으로 동일한 밝기! */
  --blue: oklch(0.6 0.2 260);
  --green: oklch(0.6 0.2 145);
  --red: oklch(0.6 0.2 25);
}

/* 다크모드 전환이 간단해짐 */
.dark {
  --primary: oklch(0.8 0.15 260);
}

5. Scroll-Driven Animations

JavaScript 없이 스크롤에 연동된 애니메이션을 구현합니다.

/* 스크롤 진행률 표시 바 */
.progress-bar {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 3px;
  background: var(--primary);
  transform-origin: left;
  animation: grow-progress auto linear;
  animation-timeline: scroll();
}

@keyframes grow-progress {
  from { transform: scaleX(0); }
  to { transform: scaleX(1); }
}

/* 요소가 뷰포트에 들어올 때 애니메이션 */
.fade-in-section {
  animation: fade-slide-up auto ease-out both;
  animation-timeline: view();
  animation-range: entry 0% entry 100%;
}

@keyframes fade-slide-up {
  from {
    opacity: 0;
    transform: translateY(40px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

6. @layer와 Cascade Layers

CSS 우선순위를 명시적으로 제어합니다.

/* 레이어 순서 선언 (낮은 순위 → 높은 순위) */
@layer reset, base, components, utilities;

@layer reset {
  * {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
  }
}

@layer base {
  body {
    font-family: system-ui, sans-serif;
    line-height: 1.6;
  }
}

@layer components {
  .btn {
    padding: 0.75rem 1.5rem;
    border-radius: 0.5rem;
    font-weight: 600;
  }
}

@layer utilities {
  .text-center { text-align: center; }
  .mt-4 { margin-top: 1rem; }
}

7. Subgrid

부모 그리드의 트랙을 자식 요소가 그대로 사용할 수 있습니다.

.card-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem;
}

.card {
  display: grid;
  grid-template-rows: subgrid;
  grid-row: span 3; /* header, body, footer */
}

/* 모든 카드의 헤더, 본문, 푸터가 정확히 정렬됨 */

마치며

모던 CSS는 이미 충분히 강력합니다. 새 프로젝트를 시작한다면, CSS 전처리기나 CSS-in-JS 도입 전에 네이티브 CSS만으로 충분한지 먼저 검토해보세요. Tailwind CSS 같은 유틸리티 프레임워크와 함께 사용하면 개발 속도와 유지보수성을 모두 잡을 수 있습니다.

핵심은 브라우저가 이미 지원하는 기능을 최대한 활용하는 것입니다.