요청사항 중에 내부 팝업을 띄울거고 내부 팝업이 활성화되어 있을때는 바디 스크롤이 움직이지 않았으면 좋겠다고 했을 때 단순히 그러다 기획자가 페이스북 데스크톱에서 사진을 볼 때 스크롤 넓이는 살아 있으면서 바디 스크롤이 되지 않는다고 알려주어 접속해서보니 굳이 코드를 보지 않아도 고민을 많이 해서 그런지 어떻게 했는지 딱 보였다. 바디에 바로 시도. body나 전체를 감싸는 container가 있다면 그 부분을
잘된다. 페이스북 이 똘똘이들. 모달 팝업이 표시될 때 브라우저 스크롤을 막는 방법 브라우저 스크롤이 있는데 모달팝업의 내부 스크롤도 있는 경우, 모달팝업의 내부 스크롤을 마우스로 내리다가 끝에 다다르면, 브라우저 스크롤이 내려간다. (어둡게 처리된 내용이 스크롤되는 현상) 이런 현상을 막기위해 모달팝업이 표시될 때는 body의 overflow를 hidden으로 변경해서 브라우저 스크롤을 없에는 방법을 사용했더니, 브라우저 스크롤바가 사라지면서 그만큼 브라우저의 가로 길이가 늘어나면서 body의 컨텐츠가 움찔하면서 새로 확보된 공간만큼 재배치가 일어난다. 모달팝업이 닫히고 다시 브라우저 스크롤바가 생기면 반대방향으로 움찔하는 현상이 일어난다. 이런 현상을 막기위해 body의 position을 fixed로 만들고, overflow를 scroll로 변경해서 스크롤바 영역은 남기지만 실제로 스크롤은 되지 않도록 하는 방법도 있다. 하지만 바닥의 스크롤이 맨위로 올라가버리는 부작용이 있고, 바닥의 스크롤바가 없는 경우에는 오히려 불필요하게 스크롤바가 표시되는 문제가 있다. body의 스크롤을 일으키는 이벤트를 모두 막아버리는 방법도 있다. 하지만 컨텐츠가 스크롤되는 경우는 마우스 휠뿐만이 아니라 키보드의 화살표입력, 터치 이벤트, 마우스의 가운데 버튼을 클릭하고 움직이는 경우 등 모든 것을 제어하기가 쉽지 않다. 가장 코드가 깔끔하고도 동작이 정확한 방법은 body의 스크롤바를 없에고 자식들에게만 스크롤바를 만들어주는 것이다. javscript 없이도 css만으로 원하는 상태를 만들 수 있고, 바닥의 스크롤바의 표시여부와 스크롤 위치도 보존되는 방법이다. body를 브라우저 꽉차게 만들어서 스크롤바가 생기지 않게 만들고 body 하위에 바닥용 div와 모달팝업용 div를 자식으로 만들고 바닥용 div (아래 예시의 .content)는 스크롤바를 생기게 만들고 모달팝업용 div (아래 예시의 .modal-background)는 스크롤바를 생기지 않게 만든다. 모달팝업이 화면을 꽉 채우기 떄문에 스크롤이 위나 아래에 닿아도 부모 body로만 스크롤 이벤트가 올라가기 때문에 body의 자식인 바닥용 div는 스크롤되지 않는다.
코딩하는 갓디노
coding/html, css by 코딩하는 갓디노 2021. 9. 6. 스크롤 방지 css 모달창(팝업) 오픈시 css를 통한 스크롤 방지입니다. css를 이용한 scroll을 방지
저작자표시비영리변경금지 'coding > html, css' 카테고리의 다른 글
태그js 스크롤 방지, react 스크롤방지, scroll prevent style, scroll 막기, scroll 방지, scroll 방지 css, 모달창 스크롤방지, 스크롤 방지, 팝업시 스크롤 방지 관련글
댓글0비밀글 이전 1 ··· 104 105 106 107 108 109 110 111 112 ··· 321 다음 |