Package detail

no-scroll

davidtheclark544.3kMIT2.1.1

Disable the document's scrolling

scroll, scrolling, disable, modal

readme

no-scroll

Disable the document's scrolling.

It's silly how many libraries have their own implementation of this. So I thought I'd make a module that other libraries could use.

Here's how this works:

  • When you turn it on(), the documentElement is styled with width: calc(100% - scrollbarSize), position: fixed, top: currentScrollTop, and overflow: hidden.
  • When you turn it off(), everything goes back to the way it was before.

Installation

npm install no-scroll

Dependencies: none.

Browser Support

IE9+

Usage

This module exposes three simple functions: on(), off() and toggle().

var noScroll = require('no-scroll');

// To turn off the document's scrolling
noScroll.on();

// To restore scrolling
noScroll.off();

// To toggle scrolling
noScroll.toggle();

If you do not have a CommonJS environment (no module.exports), the module exposes the global object noScroll.

changelog

Changelog

2.1.1

  • Prevent accidentally scrolling to the top of the viewport if you call noScroll.on() twice without any intervening noScroll.off().

2.1.0

  • Add toggle function.

2.0.0

  • Switch methods for scroll blocking. Now we're fixing the position of document.documentElement.
  • Switch methods for scrollbar compensation. Now we're using calc().

1.1.2

  • Fix IE bug.

1.1.0 and 1.1.1

  • Expose noScroll globally if module.exports is unavailable (no CommonJS environment).

1.0.2

  • No-op if there's no document.

1.0.1

  • Switch inline styles from body to documentElement.

1.0.0

  • Initial release.