Home

React 모달에서 배경 스크롤 막는 3가지 철통 보안법 (20년 경력의 코딩하는곰 노하우)

Published in react
August 03, 2025
2 min read
React 모달에서 배경 스크롤 막는 3가지 철통 보안법 (20년 경력의 코딩하는곰 노하우)

| 안녕하세요, 20년 차 React 개발자 코딩하는곰입니다! 🐻 오늘은 모달 구현 시 99%의 개발자가 놓치는 치명적인 스크롤 버그를 해결하는 방법을 공개합니다. 모달이 열렸을 때 배경이 스크롤되면 UX에 악영향을 주는데요, 제가 실제 프로젝트에서 검증한 3가지 솔루션을 여러분의 코드에 적용해보세요. 특히 SEO에도 친화적인 접근법을 중점적으로 설명드릴게요!

React 모달에서 배경 스크롤 막는 3가지 철통 보안법 (20년 경력의 코딩하는곰 노하우)
React 모달에서 배경 스크롤 막는 3가지 철통 보안법 (20년 경력의 코딩하는곰 노하우)


⚡ 개발 실력을 향상시키고 싶다면, (MySQL/MariaDB) INSERT 시 NULL과 DEFAULT 처리 완벽 가이드 - 코딩하는곰의 DB 이야기를 참고해보세요.

|

🔍 문제 원인 분석: 왜 스크롤이 막히지 않을까?

// 실패하는 전형적인 예시
const Modal = () => {
useEffect(() => {
document.body.style.overflow = 'hidden';
return () => {
document.body.style.overflow = 'auto';
};
}, []);
}

위 코드가 작동하지 않는 5가지 숨은 이유:

  1. CSS 우선순위 문제 (특히 !important 사용 시)
  2. 모달 언마운트 시 cleanup 미비
  3. 모달이 여러 개일 때 z-index 충돌
  4. 모바일 브라우저(iOS Safari)의 특수한 스크롤 동작
  5. React 18의 자동 배칭(Automatic Batching) 영향 💡 전문가 팁: useLayoutEffect를 사용하면 렌더링 전에 스타일이 적용되어 깜빡임 현상을 방지할 수 있습니다.

React 모달에서 배경 스크롤 막는 3가지 철통 보안법 (20년 경력의 코딩하는곰 노하우)
React 모달에서 배경 스크롤 막는 3가지 철통 보안법 (20년 경력의 코딩하는곰 노하우)


🤖 AI와 머신러닝 개발에 관심이 있다면, (자바스크립트 완벽 가이드) 기본 자료형 ② null, undefined, symbol - 비어 있음과 고유 값의 모든 것를 참고해보세요.

|

🛠️ 솔루션 1: CSS만으로 완벽하게 잡는 법 (SEO 친화적)

/* 모달 오픈 시 */
body.modal-open {
overflow: hidden;
position: fixed;
width: 100%;
height: 100%;
}
/* 모바일 대응 추가 속성 */
@media (hover: none) {
body.modal-open {
touch-action: none;
}
}

이 방법의 장점:

  • JavaScript 없이 순수 CSS로 구현 가능 → 크롤러 친화적
  • position: fixed로 레이아웃 이동(CLS) 방지 → 코어 웹 바이탈 개선
  • 반응형 디자인에 자동 대응
  • iOS 15+에서도 동작하는 검증된 방법 주의점: 모달 닫을 때 body 클래스를 정확히 제거해야 합니다!

React 모달에서 배경 스크롤 막는 3가지 철통 보안법 (20년 경력의 코딩하는곰 노하우)
React 모달에서 배경 스크롤 막는 3가지 철통 보안법 (20년 경력의 코딩하는곰 노하우)


웹사이트에 접속하면 서버에 남는 정보 중 하나가 바로 IP입니다. 궁금하다면 내 IP와 위치 확인하기를 통해 지금 바로 확인해보세요.

|

⚡ 솔루션 2: React Portal + Custom Hook 조합

const useScrollLock = () => {
useLayoutEffect(() => {
const originalStyle = window.getComputedStyle(document.body).overflow;
document.body.style.overflow = 'hidden';
return () => {
document.body.style.overflow = originalStyle;
// iOS 대응: 스크롤 위치 복원
window.scrollTo(0, parseInt(document.body.style.top || '0') * -1);
document.body.style.top = '';
};
}, []);
}
const Modal = () => {
useScrollLock();
return ReactDOM.createPortal(
<div className="modal-overlay">
{/* 모달 내용 */}
</div>,
document.getElementById('modal-root')
);
}

고급 기법:

  1. Portal 사용으로 DOM 구조 최적화 → SEO 가시성 향상
  2. 스크롤 위치 기억 기능 추가
  3. TypeScript로 타입 안전성 보장
  4. SSR(Next.js) 호환 버전 구현

React 모달에서 배경 스크롤 막는 3가지 철통 보안법 (20년 경력의 코딩하는곰 노하우)
React 모달에서 배경 스크롤 막는 3가지 철통 보안법 (20년 경력의 코딩하는곰 노하우)


📣 지금 화제가 되고 있는 문화행사는 바로, 2025 예천곤충축제를 참고해보세요.

| 오늘은 모달 스크롤 잠금이라는 작지만 강력한 기술로 여러분의 React 애플리케이션을 한 단계 업그레이드하는 방법을 공유했습니다. 특히 모바일 환경과 SEO를 고려한 접근법이 핵심이었죠! ✨ 코딩하는곰의 특별 조언: 모달 구현 시 접근성(ARIA 속성)과 키보드 네비게이션까지 고려하면 구글 랭크에도 긍정적인 영향을 줄 수 있습니다. 다음 포스트에서는 ‘모달 최적화로 Core Web Vitals 점수 15% 올리기’ 주제로 찾아뵙겠습니다! 여러분의 프로젝트에 적용해보시고 궁금한 점은 댓글로 남겨주세요. 함께 고민해드리겠습니다! 🚀

매일 두뇌 운동을 위한 스도쿠 게임이 필요하다면, 한국어 지원과 함께하는 스도쿠 저니를 다운로드하세요.









최상의 건강을 위한 영양가득한 식품과 정보! life-plus.co.kr 바로가기
최상의 건강을 위한 영양가득한 식품과 정보! life-plus.co.kr 바로가기



다채로운 문화축제와 공연 소식을 공유하는 블로그! culturestage.co.kr 바로가기
다채로운 문화축제와 공연 소식을 공유하는 블로그! culturestage.co.kr 바로가기



비트코인 세계로의 첫걸음! 지금 가입하고 거래 수수료 할인 혜택 받으세요! bitget.com 바로가기
비트코인 세계로의 첫걸음! 지금 가입하고 거래 수수료 할인 혜택 받으세요! bitget.com 바로가기




Tags

#developer#coding#react

Share

Previous Article
(Vue.js & Angular) Cant bind to X 속성 바인딩 오류 완벽 해결 가이드

Table Of Contents

1
🔍 문제 원인 분석: 왜 스크롤이 막히지 않을까?
2
🛠️ 솔루션 1: CSS만으로 완벽하게 잡는 법 (SEO 친화적)
3
⚡ 솔루션 2: React Portal + Custom Hook 조합

Related Posts

React 18의 주요 변화 완벽 가이드 자동 배치, 트랜지션, 동시성 기능까지
December 14, 2025
3 min