본문 스크롤은 방지하지만 오버레이 스크롤은 허용


446

나는 이것을 허용하지만 아직 찾지 못한 "lightbox"형 솔루션을 찾고 있습니다 (아는 것이 있으면 제안하십시오).

다시 만들려는 동작 은 이미지를 클릭 할 때 Pinterest에 표시되는 것과 같습니다 . (오버레이는 스크롤입니다 전체 오버레이가 페이지의 상단에 페이지처럼 이동 같이 하지만, 신체의) 뒤에 . 오버레이 의 은 고정되어 있습니다.

CSS만으로 이것을 만들려고했습니다 ( 예 : div전체 페이지와 본문 위에 오버레이overflow: hidden ) div스크롤 할 수는 없습니다 .

본문 / 페이지를 스크롤하지 않고 전체 화면 컨테이너 내에서 계속 스크롤하는 방법은 무엇입니까?


이것은 overflow-y scroll로 고정 된 위치를 사용하여 hundrets와 같은 "오버레이"플러그인입니까?
ggzone

3
컨텐츠가 로그인 벽 뒤에 있기 때문에 Pinterest 링크는 도움이되지 않습니다.
2540625

4
2017 업데이트 : Pinterest에 로그인해도 OP에 설명 된 오버레이 효과가 더 이상 존재하지 않습니다. 이미지를 클릭하면 큰 버전의 이미지가 표시된 일반 페이지로 이동합니다.
Annabel

답변:


624

이론

가장 관심있는 사이트의 현재 구현을 살펴보면 (향후 변경 될 수 있음) 오버레이를 열면 noscroll클래스가 body요소에 적용되고 overflow: hidden설정되므로 body더 이상 스크롤 할 수 없습니다.

(더 - 플라이 또는 이미 페이지 내부로 보이게 만든 오버레이 display: block가지며, 그 차이가 없습니다) position : fixedoverflow-y: scroll함께, top, left, rightbottom속성 설정0 :이 스타일은 전체 뷰포트를 채우기 오버레이합니다.

div오버레이 내부는 대신입니다 position: static당신이 볼 수있는 수직 스크롤이 그 요소와 관련이 있습니다. 결과적으로 내용은 스크롤 가능하지만 오버레이는 고정되어 있습니다.

확대 / 축소를 닫으면 오버레이를 숨기고 (를 통해 display: none) 자바 스크립트 를 통해 오버레이를 완전히 제거 할 수도 있습니다 (또는 내용 만 삽입하는 방법은 사용자에게 달려 있습니다).

마지막 단계로 noscroll클래스를 제거 해야합니다 body(overflow 속성은 초기 값으로 돌아갑니다)


암호

코드 펜 예

( aria-hidden오버레이를 표시하고 숨기고 접근성을 높이기 위해 오버레이 의 속성을 변경하여 작동합니다 ).

마크 업
(열기 버튼)

<button type="button" class="open-overlay">OPEN LAYER</button>

(오버레이 및 닫기 버튼)

<section class="overlay" aria-hidden="true">
  <div>
    <h2>Hello, I'm the overlayer</h2>
    ...   
    <button type="button" class="close-overlay">CLOSE LAYER</button>
  </div>
</section>

CSS

.noscroll { 
  overflow: hidden;
}

.overlay { 
   position: fixed; 
   overflow-y: scroll;
   top: 0; right: 0; bottom: 0; left: 0; }

[aria-hidden="true"]  { display: none; }
[aria-hidden="false"] { display: block; }

자바 스크립트 (vanilla-JS)

var body = document.body,
    overlay = document.querySelector('.overlay'),
    overlayBtts = document.querySelectorAll('button[class$="overlay"]');

[].forEach.call(overlayBtts, function(btt) {

  btt.addEventListener('click', function() { 

     /* Detect the button class name */
     var overlayOpen = this.className === 'open-overlay';

     /* Toggle the aria-hidden state on the overlay and the 
        no-scroll class on the body */
     overlay.setAttribute('aria-hidden', !overlayOpen);
     body.classList.toggle('noscroll', overlayOpen);

     /* On some mobile browser when the overlay was previously
        opened and scrolled, if you open it again it doesn't 
        reset its scrollTop property */
     overlay.scrollTop = 0;

  }, false);

});

마지막으로, 속성에 transition적용된 CSS 에 의해 페이드 인 효과로 오버레이가 열리는 또 다른 예가 opacity있습니다. 또한 padding-right스크롤 막대가 사라질 때 기본 텍스트에서 리플 로우를 피하기 위해 a 가 적용됩니다.

코드 펜 예제 (페이드)

CSS

.noscroll { overflow: hidden; }

@media (min-device-width: 1025px) {
    /* not strictly necessary, just an experiment for 
       this specific example and couldn't be necessary 
       at all on some browser */
    .noscroll { 
        padding-right: 15px;
    }
}

.overlay { 
     position: fixed; 
     overflow-y: scroll;
     top: 0; left: 0; right: 0; bottom: 0;
}

[aria-hidden="true"] {    
    transition: opacity 1s, z-index 0s 1s;
    width: 100vw;
    z-index: -1; 
    opacity: 0;  
}

[aria-hidden="false"] {  
    transition: opacity 1s;
    width: 100%;
    z-index: 1;  
    opacity: 1; 
}

6
이것이 정답입니다. 누군가 올바른지 확인 표시를해야합니다.
Scoota P

64
이것은 절대적으로 정확하지만 모바일 사파리에서는 작동하지 않습니다. 배경이 계속 스크롤되고 오버레이가 수정됩니다.
a10s

20
잘 작동합니다. 스크롤 가능한 뷰포트 컨테이너 div에는 CSS 스타일이 있어야 position:fixed하고 세로 오버플로 스크롤 가능이 있어야합니다 . 나는 성공적으로 overflow-y:auto;iOS 운동량 / 관성 스크롤 -webkit-overflow-scrolling:touch;을 위해 CSS에 추가 했습니다. 내가 사용 display:block;, width:100%;height:100%;CSS는 전체 페이지 뷰포트를 할 수 있습니다.
Slink

10
미안합니다, 이해하지 못하겠습니다. 본문을 오버플로로 설정 : 숨김은 iPad iOS7에서 탄성체 스크롤을 비활성화하지 않습니다. 그래서 js 내에 추가해야했습니다 : document.body.addEventListener ( 'touchmove', function (event) {event.preventDefault ();}, false); SADLY는 모든 요소가 스크롤 가능하지 않게합니다. 지금까지 어떤 솔루션도 찾지 못했습니다 (추가 플러그인없이)
Garavani

22
오버레이가 활성화되어있을 때 사용자가 이미 바디를 아래로 스크롤 한 경우 overflow : hidden을 설정하면 바디가 위로 올라갑니다. 이 주위에 어떤 방법이 있습니까?
Björn Andersson

75

iOS에서 오버 스크롤을 방지하려면 .noscroll 클래스에 고정 된 위치를 추가하면됩니다.

body.noscroll{
    position:fixed;
    overflow:hidden;
}

106
이 솔루션을 사용하면 고정 된 위치로 인해 본문이 자동으로 콘텐츠 맨 위로 스크롤됩니다. 사용자에게 방해가 될 수 있습니다.
tzi

5
사용의 또 다른 문제 position:fixed는 본체의 크기가 조정되었다는 것입니다. 다른 CSS와 충돌했을 수도 있지만 overflow:hidden필요한 모든 것
Dex

3
입력 필드를 탭하면 포커스 점프가 끊어집니다
Atav32

@ Atav32 별도의 문제처럼 들리지만 위치 및 오버플로가 탭 순서에 영향을 미치지 않아야합니다.
am80l

@ am80l 죄송합니다 내 이전 의견은 매우 모호했습니다 : 탭 순서가 작동하지만 iOS Safari의 필드를 탭하면 화면이
흔들립니다

44

사용하지 마십시오 overflow: hidden;body. 자동으로 모든 것을 맨 위로 스크롤합니다. JavaScript도 필요하지 않습니다. 를 활용하십시오 overflow: auto;. 이 솔루션은 모바일 Safari에서도 작동합니다.

HTML 구조

<div class="overlay">
    <div class="overlay-content"></div>
</div>

<div class="background-content">
    lengthy content here
</div>

스타일링

.overlay{
    position: fixed;
    top: 0px;
    left: 0px;
    right: 0px;
    bottom: 0px;
    background-color: rgba(0, 0, 0, 0.8);

    .overlay-content {
        height: 100%;
        overflow: scroll;
    }
}

.background-content{
    height: 100%;
    overflow: auto;
}

여기 데모 와 소스 코드를 참조하십시오 .

최신 정보:

키보드 스페이스 바를 원하는 사람들에게는 페이지 업 / 다운이 작동합니다. 예를 들어, 오버레이에 집중해야합니다 (예 : 클릭) div. 오버레이가 측면으로 이동하기 때문에 오버레이가 "끄기"상태와 동일합니다. 그렇지 않으면 브라우저의 경우 두 가지 정상적인 div것이므로 왜 그중 하나에 초점을 맞춰야하는지 알 수 없습니다.


5
멋진 솔루션,하지만 난 내가 할 의도가없는 div에 내 모든 내용을 포장해야합니다 ...
Jacob

2
이상적인 솔루션입니다. 누구 든지이 문제가 발생 html, body { height: 100%; }하면 데모에서와 같이 올바르게 작동 하도록 추가해야 할 수도 있습니다 .
John

4
@ user18490 각도 / 재료 부분은이 솔루션이 작동한다는 사실과 아무 관련이 없습니다.
Lucia

10
이로 인해 모바일 장치 UX는 여러 가지 방법으로 (예 : URL 막대 숨기기, 오버 스크롤 선호도 등) 데스크톱 에서 스크롤스페이스 바까지 손상 됩니다.
nitely

2
이것은 더 강력한 옵션이지만 약간 복잡합니다. 예를 들어 PageUp 및 PageDown은 새로 고침시 작동하지 않습니다. .offset()계산을 위해 값을 사용하는 것은 엉망이되는 등 ...
BlackPanther

42

overscroll-behavior css 속성을 사용하면 컨텐츠의 위 / 아래에 도달 할 때 브라우저의 기본 오버플로 스크롤 동작을 무시할 수 있습니다.

오버레이하려면 다음 스타일을 추가하십시오.

.overlay {
   overscroll-behavior: contain;
   ...
}

코드 펜 데모

현재 Chrome, Firefox 및 IE에서 작동합니다 ( caniuse )

자세한 내용은 Google 개발자 기사를 확인 하십시오 .


4
최신 Chrome, Mozilla 및 Opera에서 작동하고 있음을 알려드립니다. 좋은 시간 되세요!
Wannabe JavaGeek

3
누군가가 이것에 현상금을 추가해야합니다. 이것이 올바른 해결책입니다. 자바 스크립트가 필요하지 않습니다. :)
joseph.l.hunsaker 5

9
이 솔루션의 문제점은 오버레이가 스크롤 가능한 경우에만 작동한다는 것입니다. 모달이 있고 화면에 모두 들어가서 내부에 스크롤이없는 경우 본문 스크롤이 중지되지 않습니다. 그것은 사파리에서도 전혀 작동하지 않습니다 :)
waterplea

1
나는 이것과 overflow-y: scroll(Codepen 데모에서) 의 조합으로 해결했습니다 . @pokrishka가 제기 한 요지는 유효하지만 제 경우에는 걱정하지 않습니다. 어쨌든 브라우저의 구현이 앞으로이 세부 사항을 다룰 것인지 궁금합니다. Firefox에서 모달이 화면에 맞지 않도록 브라우저 크기를 조정 한 다음 다시 크기를 조정하면 전체 크기로 크기를 조정 한 후에도 페이지가 다시로드 될 때 까지이 속성이 작동하도록합니다 (예 : 스크롤이 포함됨) , 적어도.
Marc.2377

33

대부분의 솔루션에는 스크롤 위치를 유지하지 못한다는 문제가 있으므로 Facebook에서 수행하는 방식을 살펴 보았습니다. 기본 컨텐츠를 설정하는 것 외에도 position: fixed스크롤 위치를 유지하도록 상단을 동적으로 설정합니다.

scrollPosition = window.pageYOffset;
mainEl.style.top = -scrollPosition + 'px';

그런 다음 오버레이를 다시 제거하면 스크롤 위치를 재설정해야합니다.

window.scrollTo(0, scrollPosition);

이 솔루션을 보여주기 위해 작은 예를 만들었습니다.

let overlayShown = false;
let scrollPosition = 0;

document.querySelector('.toggle').addEventListener('click', function() {
  if (overlayShown) {
		showOverlay();
  } else {
    removeOverlay();
  }
  overlayShown = !overlayShown;
});

function showOverlay() {
    scrollPosition = window.pageYOffset;
  	const mainEl = document.querySelector('.main-content');
    mainEl.style.top = -scrollPosition + 'px';
  	document.body.classList.add('show-overlay');
}

function removeOverlay() {
		document.body.classList.remove('show-overlay');
  	window.scrollTo(0, scrollPosition);
    const mainEl = document.querySelector('.main-content');
    mainEl.style.top = 0;
}
.main-content {
  background-image: repeating-linear-gradient( lime, blue 103px);
  width: 100%;
  height: 200vh;
}

.show-overlay .main-content {
  position: fixed;
  left: 0;
  right: 0;
  overflow-y: scroll; /* render disabled scroll bar to keep the same width */
}

.overlay {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.3);
  overflow: auto;
}

.show-overlay .overlay {
  display: block;
}

.overlay-content {
  margin: 50px;
  background-image: repeating-linear-gradient( grey, grey 20px, black 20px, black 40px);
  height: 120vh;
}

.toggle {
  position: fixed;
  top: 5px;
  left: 15px;
  padding: 10px;
  background: red;
}

/* reset CSS */
body {
  margin: 0;
}
<main class="main-content"></main>

  <div class="overlay">
    <div class="overlay-content"></div>
  </div>
  
  <button class="toggle">Overlay</button>


이것은 나에게 가장 우아한 해결책 인 것 같습니다. Google은 페이지를 스크롤하고 요소를 이동하는 것과 동일한 트릭을 사용한다는 것을 알고 있습니다.
forallepsilon

이것은 나에게 100 % 정확했던 유일한 솔루션입니다.이 답변을 더 일찍 찾았 으면 좋겠습니다.
user0103

31

body 태그에 "overflow : hidden"을 추가하면 작업이 수행되지 않는 경우가 있습니다. 이 경우 속성을 html 태그에 추가해야합니다.

html, body {
    overflow: hidden;
}

iOS의 경우 다음을 설정해야합니다.width: 100%; height: 100%;
Gavin

2
이것은이 질문에 대한 다른 많은 솔루션에서도 볼 수있는 문제를 해결하지 못합니다. 모달이 열려있을 때 창이 페이지의 아무 곳이나 스크롤되면 페이지의 맨 위로 스크롤됩니다. 나는 필립 Mitterer의 해결책을 발견 여기에 대부분의 경우를 다루고 최선의 선택이 될 수 있습니다.
CLL

1
나는 당신이 (웹 또는 모바일에서)이 문제를 경험 한 적이 없습니다. 바이올린이나 jsbin에서 작동하지 않는 전체 코드 (DOM과 함께)를 공유 할 수 있습니까? 어쨌든 Javascript 해결 방법을 사용 하여이 문제를 해결하는 것에주의를 기울입니다.
Francisco Hodge

7

일반적으로 말하면 부모 (이 경우 본문)가 자식 (이 경우 오버레이)이 스크롤 될 때 스크롤되지 않도록하려면 스크롤 이벤트가 버블 링되는 것을 방지하기 위해 자식을 부모의 형제로 만듭니다. 부모. 부모가 본문 인 경우 추가 래핑 요소가 필요합니다.

<div id="content">
</div>
<div id="overlay">
</div>

참조 브라우저의 기본 스크롤바로 스크롤 특히 DIV 내용 의 작업을 볼 수 있습니다.


1
최고의 해결책, 진정한 "즉시"사고, 그렇게 잘 표현되지 않았습니다.
Mark

본문이 스크롤하는 요소가 아닌 경우 페이지에서 아래로 스크롤 할 때 모바일에서 상단 표시 줄이 위로 미끄러지지 않습니다.
Seph Reed 2018

7

선택한 답변은 정확하지만 몇 가지 제한 사항이 있습니다.

  • 손가락으로 초강력 "플링"이 여전히 스크롤됩니다 <body> 배경에서 됩니다
  • <input>모달에서을 눌러 가상 키보드를 열면 이후의 모든 스크롤이<body>

첫 번째 문제에 대한 해결책은 없지만 두 번째 문제에 대해 밝히고 싶었습니다. 혼란스럽게도 부트 스트랩은 키보드 문제를 문서화하는 데 사용되었지만 http://output.jsbin.com/cacido/quiet를 인용하여 키보드 문제가 해결되었다고 주장했습니다. 를 수정의 예로 .

실제로,이 예제는 iOS에서 테스트를 통해 잘 작동합니다. 그러나 최신 부트 스트랩 (v4)으로 업그레이드하면 문제가 발생합니다.

그들 사이의 차이점을 파악하기 위해 Bootstrap ( http://codepen.io/WestonThayer/pen/bgZxBG) 에 더 이상 의존하지 않도록 테스트 사례를 줄였습니다 .

결정 요인은 기괴합니다. 키보드 문제를 방지하는 것을 요구하는 것 같다 background-color 되지 않은 루트에 설정 <div>모달을 포함 하고 모달의 내용이 서로 중첩되어 있어야 <div>할 수있는,background-color 설정을.

테스트하려면 Codepen 예제에서 아래 행의 주석을 해제하십시오.

.modal {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 2;
  display: none;
  overflow: hidden;
  -webkit-overflow-scrolling: touch;
  /* UNCOMMENT TO BREAK */
/*   background-color: white; */
}

4

터치 장치 101vh의 경우 오버레이 래퍼에 1px 너비의 최소 높이 투명 div를 추가하십시오. 그런 다음 추가-webkit-overflow-scrolling:touch; overflow-y: auto; 랩퍼에 하십시오. 이렇게하면 모바일 사파리가 오버레이를 스크롤 할 수 있다고 생각하여 몸에서 터치 이벤트를 가로 챌 수 있습니다.

다음은 샘플 페이지입니다. 모바일 사파리에서 열기 : http://www.originalfunction.com/overlay.html

https://gist.github.com/YarGnawh/90e0647f21b5fa78d2f678909673507f


up, 그 트릭을했다. -webkit-overflow-scrolling:touch;터치 이벤트를 가로 채기 위해 각 스크롤 가능한 컨테이너 에 추가해야했습니다 .
Mati

난 여전히 아이폰에서 스크롤 할 수 있어요
시몬 Zandara

@SeniorSimoneZandara 아니에요. 이것은 배경 스크롤을 방지하기 위해 잘 작동합니다
godblessstrawberry

3

방지하려는 동작을 스크롤 체인이라고합니다. 비활성화하려면

overscroll-behavior: contain;

CSS에서 오버레이에.


3

이 질문은 Ipad 및 Iphone의 페이지에서 발생하는 문제를 해결하려고한다는 것을 알았습니다. 이미지가있는 고정 된 div를 팝업으로 표시 할 때 본문이 스크롤되었습니다.

일부 답변은 좋지만 아무도 내 문제를 해결하지 못했습니다. Christoffer Pettersson의 다음 블로그 게시물을 찾았습니다. 거기에 제시된 솔루션은 iOS 장치 관련 문제를 해결하고 스크롤 배경 문제를 해결하는 데 도움이되었습니다.

iOS Safari의 고무 밴드 스크롤에 대해 배운 6 가지

제안 된대로 링크가 오래된 경우 블로그 게시물의 주요 사항을 포함시킵니다.

""메뉴가 열려있는 상태에서 사용자가 배경 페이지를 스크롤 할 수 없게하려면 JavaScript 및 CSS 클래스를 적용하여 스크롤 할 수있는 요소를 제어 할 수 있습니다.

Stackoverflow 응답을 기반으로 , touchmove 이벤트가 트리거 될 때 비활성화 스크롤이있는 요소가 기본 스크롤 동작을 수행하지 않도록 제어 할 수 있습니다. "

 document.ontouchmove = function ( event ) {

    var isTouchMoveAllowed = true, target = event.target;

    while ( target !== null ) {
        if ( target.classList && target.classList.contains( 'disable-scrolling' ) ) {
            isTouchMoveAllowed = false;
            break;
        }
        target = target.parentNode;
    }

    if ( !isTouchMoveAllowed ) {
        event.preventDefault();
    }
};

그런 다음 페이지 div에 disable-scrolling 클래스를 배치하십시오.

<div class="page disable-scrolling">

2

"새로운"CSS와 JQuery를 사용하여이 작업을 쉽게 수행 할 수 있습니다.

초기 : body {... overflow:auto;} JQuery를 사용하면 '오버레이'와 '바디'를 동적으로 전환 할 수 있습니다. '몸'에있을 때 사용

body {
   position: static;
   overflow: auto;
}

'오버레이'사용시

body {
   position: sticky;
   overflow: hidden;
}

스위치에 대한 JQuery ( 'body'-> 'overlay') :

$("body").css({"position": "sticky", "overflow": "hidden"});

스위치에 대한 JQuery ( 'overlay'-> 'body') :

$("body").css({"position": "static", "overflow": "auto"});

1

나는 그것을 시도했기 때문에 이전 답변에 추가하고 싶습니다. 본문을 position : fixed로 전환하자마자 일부 레이아웃이 깨졌습니다. 이를 피하기 위해 신체 높이를 100 %로 설정해야했습니다.

function onMouseOverOverlay(over){
    document.getElementsByTagName("body")[0].style.overflowY = (over?"hidden":"scroll");
    document.getElementsByTagName("html")[0].style.position = (over?"fixed":"static");
    document.getElementsByTagName("html")[0].style.height = (over?"100%":"auto");
}

1

다음 HTML을 사용하십시오.

<body>
  <div class="page">Page content here</div>
  <div class="overlay"></div>
</body>

그런 다음 JavaScript를 가로 채서 스크롤을 중지하십시오.

$(".page").on("touchmove", function(event) {
  event.preventDefault()
});

그런 다음 상황을 정상으로 되돌리려면

$(".page").off("touchmove");


1

모바일 / 터치 기기에서 사용 중지하려는 경우 가장 간단한 방법은 touch-action: none; 입니다.

예:

const app = document.getElementById('app');
const overlay = document.getElementById('overlay');

let body = '';

for (let index = 0; index < 500; index++) {
  body += index + '<br />';
}

app.innerHTML = body;
app.scrollTop = 200;

overlay.innerHTML = body;
* {
  margin: 0;
  padding: 0;
}

html,
body {
  height: 100%;
}

#app {
  background: #f00;
  position: absolute;
  height: 100%;
  width: 100%;
  overflow-y: scroll;
  line-height: 20px;
}

#overlay {
  background: rgba(0,0,0,.5);
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 100%;
  padding: 0 0 0 100px;
  overflow: scroll;
}
<div id='app'></div>
<div id='overlay'></div>

(이 예제는 스택 오버플로와 관련하여 작동하지 않습니다. 독립형 페이지에서 다시 만들어야합니다.)

#app컨테이너 스크롤을 사용하지 않으려면을 추가하십시오 touch-action: none;.


1
터치 동작이 실제로 iOS에서 작동한다면. 이 경우 전체 "앱"을 별도의 div로 래핑 할 필요가 없습니다.
powerbuoy

0

이 시도

var mywindow = $('body'), navbarCollap = $('.navbar-collapse');    
navbarCollap.on('show.bs.collapse', function(x) {
                mywindow.css({visibility: 'hidden'});
                $('body').attr("scroll","no").attr("style", "overflow: hidden");
            });
            navbarCollap.on('hide.bs.collapse', function(x) {
                mywindow.css({visibility: 'visible'});
                $('body').attr("scroll","yes").attr("style", "");
            });

0

body / html 스크롤을 멈추려면 다음과 같이 추가하십시오.

CSS

    html, body {
        height: 100%;
    }

    .overlay{
        position: fixed;
        top: 0px;
        left: 0px;
        right: 0px;
        bottom: 0px;
        background-color: rgba(0, 0, 0, 0.8);

        .overlay-content {
            height: 100%;
            overflow: scroll;
        }
    }

    .background-content{
        height: 100%;
        overflow: auto;
    }

HTML

    <div class="overlay">
        <div class="overlay-content"></div>
    </div>

    <div class="background-content">
        lengthy content here
    </div>

기본적으로 JS없이 할 수 있습니다.

주요 아이디어는 높이 : 100 % 및 오버플로 : 자동으로 HTML / 본문을 추가하는 것입니다. 오버레이 내에서 요구 사항에 따라 스크롤을 활성화 / 비활성화 할 수 있습니다.

도움이 되었기를 바랍니다!



-2

스크롤 막대를 비활성화 및 활성화하려면 아래 코드를 사용하십시오.

Scroll = (
    function(){
          var x,y;
         function hndlr(){
            window.scrollTo(x,y);
            //return;
          }  
          return {

               disable : function(x1,y1){
                    x = x1;
                    y = y1;
                   if(window.addEventListener){
                       window.addEventListener("scroll",hndlr);
                   } 
                   else{
                        window.attachEvent("onscroll", hndlr);
                   }     

               },
               enable: function(){
                      if(window.removeEventListener){
                         window.removeEventListener("scroll",hndlr);
                      }
                      else{
                        window.detachEvent("onscroll", hndlr);
                      }
               } 

          }
    })();
 //for disabled scroll bar.
Scroll.disable(0,document.body.scrollTop);
//for enabled scroll bar.
Scroll.enable();
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.