Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- javascript
- google style guide
- html제거
- 파이썬
- @keyframes
- CSS애니메이션
- to do list
- CSS로딩
- 로딩UI
- vuejs입문
- 뉴스수집
- 투두리스트
- css rule
- 스타일가이드
- css규칙
- 코딩규칙
- vueJS
- 자바스크립트
- 웹스크래핑
- Vue.js
- python
- 구글스타일가이드
- 코딩가이드
- 개발회고
- 코딩컨밴션
- 자기개발
- 프레임워크
- vue-cli
- 구글CSS
- MariaDB
Archives
- Today
- Total
코드공부방
강제로 body 스크롤막기 (PC, Mobile (iOS, Android..) 모든 환경) 본문
반응형
레이어팝업을 띄우면 뒤쪽 콘텐츠의 스크롤을 막아달라는 요청이 간혹 있다.
(그냥 스크롤이 가능하게 되길 희망하는 클라이언트도 있다.)
/* CSS */
.hidden {height:100%; min-height:100%; overflow:hidden !important; touch-action:none;}
//Javascript
function scrollDisable(){
$('html, body').addClass('hidden');
}
function scrollAble(){
$('html, body').removeClass('hidden');
}
레이어팝업을 띄우는 함수안에 위와 같은 함수를 만들어 넣어주면 된다. 위 함수는 html과 body태그에 "height:100%; overflow:hidden;" 속성을 줘서 현재 보이는 화면 외에는 스크롤이 되지 않게 하는 방식이다.
이게 다냐고? 아니다. (* iOS 버전에 따라 위 코드만으로도 처리 가능하다.)
iOS에서는 보란듯이 위 코드를 넣어도 스크롤이 되어버린다(?) 때문에 아래와 같이 scroll, touchmove, mousewheel 이벤트를 원천적으로 막아버려야 스크롤을 막을 수 있다.
//Javascript
function scrollDisable(){
$('body').addClass('scrollDisable').on('scroll touchmove mousewheel', function(e){
e.preventDefault();
});
}
function scrollAble(){
$('body').removeClass('scrollDisable').off('scroll touchmove mousewheel');
}
반응형
'웹퍼블리셔 > JavaScript' 카테고리의 다른 글
jQuery(제이쿼리) 동적으로 생성된 요소 이벤트 및 index(인덱스) 가져오기 (0) | 2020.02.10 |
---|---|
제이쿼리 쿠키(jQuery Cookie) 활용하여 오늘 하루 보지 않기 기능 구현하기 (12) | 2020.02.04 |
lozyload, 미디어 콘텐츠 지연로딩 시키기 (feat. jQuery Lazy) (0) | 2019.09.19 |
스크롤 감지하여 고정메뉴 노출/비노출 처리 이벤트 (9) | 2019.09.04 |
무한스크롤 (Infinity Scroll) UI 구현하기 (3) | 2019.09.04 |
Comments