CSS is awesome and handles this https://developer.mozilla.org/en-US/docs/Web/CSS/overscroll-behavior
A React component wrapper that restricts scrolling capabilities of everything except for its children.
Wheel events, touchmove events, and key press events that affect page location (e.g. directional arrows, pageup/pagedown/spacebar) are all locked.
Check out the demo here!
npm install react-scroll-lock-component
or
yarn add react-scroll-lock-component
import React from 'react';
import ScrollLock from 'react-scroll-lock-component';
export default () => (
<div>
<ScrollLock>
<div>
{/*
unlike normal scroll functionality, when the user scrolls this
div and reaches the beginning or end nothing else on the page will scroll
*/}
</div>
</ScrollLock>
<div>
{/* scrolling outside of the scroll lock will remain normal */}
</div>
</div>
);
Prop | description | default value |
---|---|---|
enabled | programatically enable or disable the scroll lock | true |
className | apply custom styles to the scroll lock component | '' |
Adapted from this old mixin
MIT