| 안녕하세요, 20년 차 React 개발자 코딩하는곰입니다! 🐻 오늘은 모달 구현 시 99%의 개발자가 놓치는 치명적인 스크롤 버그를 해결하는 방법을 공개합니다. 모달이 열렸을 때 배경이 스크롤되면 UX에 악영향을 주는데요, 제가 실제 프로젝트에서 검증한 3가지 솔루션을 여러분의 코드에 적용해보세요. 특히 SEO에도 친화적인 접근법을 중점적으로 설명드릴게요!
⚡ 개발 실력을 향상시키고 싶다면, (MySQL/MariaDB) INSERT 시 NULL과 DEFAULT 처리 완벽 가이드 - 코딩하는곰의 DB 이야기를 참고해보세요.
|
// 실패하는 전형적인 예시const Modal = () => {useEffect(() => {document.body.style.overflow = 'hidden';return () => {document.body.style.overflow = 'auto';};}, []);}
위 코드가 작동하지 않는 5가지 숨은 이유:
useLayoutEffect를 사용하면 렌더링 전에 스타일이 적용되어 깜빡임 현상을 방지할 수 있습니다.
🤖 AI와 머신러닝 개발에 관심이 있다면, (자바스크립트 완벽 가이드) 기본 자료형 ② null, undefined, symbol - 비어 있음과 고유 값의 모든 것를 참고해보세요.
|
/* 모달 오픈 시 */body.modal-open {overflow: hidden;position: fixed;width: 100%;height: 100%;}/* 모바일 대응 추가 속성 */@media (hover: none) {body.modal-open {touch-action: none;}}
이 방법의 장점:
position: fixed로 레이아웃 이동(CLS) 방지 → 코어 웹 바이탈 개선body 클래스를 정확히 제거해야 합니다!
웹사이트에 접속하면 서버에 남는 정보 중 하나가 바로 IP입니다. 궁금하다면 내 IP와 위치 확인하기를 통해 지금 바로 확인해보세요.
|
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'));}
고급 기법:
📣 지금 화제가 되고 있는 문화행사는 바로, 2025 예천곤충축제를 참고해보세요.
| 오늘은 모달 스크롤 잠금이라는 작지만 강력한 기술로 여러분의 React 애플리케이션을 한 단계 업그레이드하는 방법을 공유했습니다. 특히 모바일 환경과 SEO를 고려한 접근법이 핵심이었죠! ✨ 코딩하는곰의 특별 조언: 모달 구현 시 접근성(ARIA 속성)과 키보드 네비게이션까지 고려하면 구글 랭크에도 긍정적인 영향을 줄 수 있습니다. 다음 포스트에서는 ‘모달 최적화로 Core Web Vitals 점수 15% 올리기’ 주제로 찾아뵙겠습니다! 여러분의 프로젝트에 적용해보시고 궁금한 점은 댓글로 남겨주세요. 함께 고민해드리겠습니다! 🚀
매일 두뇌 운동을 위한 스도쿠 게임이 필요하다면, 한국어 지원과 함께하는 스도쿠 저니를 다운로드하세요.
