새로운 CSS 스크롤 기능이 JavaScript를 대체할 것입니다

발행: (2026년 1월 20일 오후 04:04 GMT+9)
5 min read
원문: Dev.to

Source: Dev.to

Modern CSS That Replaces JavaScript (Part 1) — Scroll‑Based Visibility Without JS

이 글은 일반적인 JavaScript 패턴을 대체할 수 있는 최신 CSS 기능을 다루는 시리즈의 첫 번째 파트이며, 성능, 접근성 및 유지보수성을 향상시킵니다.

수년간 스크롤 위치에 따라 UI 요소를 보여주거나 숨기려면 JavaScript를 사용해야 했습니다. 최신 CSS가 그 흐름을 바꾸고 있습니다. 스크롤‑구동 컨테이너 쿼리가 도입되면서 이제 순수 CSS만으로 스크롤 기반 UI 가시성을 관리할 수 있게 되었으며, JavaScript는 필요 없습니다.

이 글에서는 새 CSS scroll-state 기능을 이용해 페이지가 스크롤 가능할 때만 나타나는 “Back to Top” 버튼을 만들어 보겠습니다.


Why This Matters

JavaScript 스크롤 핸들러는 다음과 같은 문제를 일으킬 수 있습니다.

  • 저사양 기기에서 성능 저하
  • 불필요한 복잡성 추가
  • 디바운싱 또는 스로틀링 필요
  • 번들 크기 증가

현대 CSS는 다음을 제공합니다.

  • 향상된 성능
  • 선언형 UI 동작
  • 더 깔끔하고 유지보수하기 쉬운 코드

The Key Concept: scroll-state Container Queries

CSS는 이제 컨테이너 쿼리를 사용해 스크롤 조건에 반응할 수 있습니다. 우리는 다음을 정의합니다.

  1. 스크롤 컨테이너
  2. 이름이 지정된 스크롤 상태
  3. 스크롤 위치에 기반한 조건부 스타일

Step 1: Define the Scroll Container

html {
  container-type: scroll-state;
  container-name: page;
  scroll-behavior: smooth;
}

이 코드는 html 요소를 page라는 이름의 scroll-state 컨테이너로 전환합니다.

Step 2: Base Page Styling

html,
body {
  padding: 0;
  margin: 0;
}

.title-header {
  background-color: #4caf50;
  color: white;
  padding: 10px 0;
  text-align: center;
  font-size: 24px;
}

.content {
  max-width: 480px;
  margin: 0 auto;
}

특별한 점은 없습니다—단순히 레이아웃과 타이포그래피를 정의한 것입니다.

Step 3: Back‑to‑Top Button (Hidden by Default)

.backtotop {
  display: flex;
  position: fixed;
  bottom: 20px;
  right: 20px;
  background: #000066;
  color: #fff;
  padding: 10px 16px;
  border-radius: 30px;
  font-size: 24px;
  text-decoration: none;

  /* Move the button off‑screen; animations stay smooth */
  translate: 300px 0;
  transition: translate 0.3s ease-in-out;
}

display:none 대신 translate를 사용해 버튼을 화면 밖으로 이동시키므로 애니메이션이 부드럽게 유지됩니다.

Step 4: Reveal Button Using a Scroll‑State Query

@container page scroll-state(scrollable: top) {
  .backtotop {
    translate: 0 0;
  }
}

이 의미는

  • 페이지가 스크롤 가능해지고 상단에서 스크롤이 가능해지면 버튼이 자동으로 슬라이드되어 나타납니다.
  • JavaScript가 전혀 필요 없습니다. 스크롤 리스너도 없습니다.

HTML Markup

<h1>Manage Visibility on Scroll with NO JS</h1>

<h2>NEW CSS Scroll Features Will Replace JavaScript</h2>

<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry...</p>

<a href="#top">Move to top</a>

Why This Is a Big Deal

  • ✅ JavaScript 전혀 없음 – 런타임 오버헤드가 사라집니다.
  • 활용 사례:
    • 스티키 헤더
    • 스크롤‑투‑탑 버튼
    • 점진적 공개 UI
    • 접근성 친화적 인터랙션

Browser Support Notes

이 기능들은 최신 Chromium 기반 브라우저에서 현재 지원되고 있는 최첨단 기술입니다. 프로덕션에 적용할 때는 점진적 향상을 적용하세요.


Final Thoughts

CSS는 이제 단순히 스타일링을 넘어 행동 레이어가 되고 있습니다. 다음에 관심이 있다면:

  • 성능
  • 유지보수성
  • 접근성
  • 현대적인 프론트엔드 아키텍처

scroll-state 컨테이너 쿼리는 반드시 배워야 할 가치가 있습니다.

행복한 스타일링 되세요, 그리고 읽어 주셔서 감사합니다! 🚀

Back to Blog

관련 글

더 보기 »

CSS @property: 고급 테마

웹 애플리케이션의 테마를 적용할 때, CSS 변수는 값을 관리하는 가장 간단하고 편리한 방법입니다. 이 변수들은 종종 전역 설정에 사용되지만, @pro...