UNPKG

ost-ui

Version:
49 lines (38 loc) 1.29 kB
import './scrollingelement'; var preventBgScroll = function preventBgScroll() { if (!window.OSTMASK_BODY_SCROLL_LOCKED_POSITION_FIXED) { window.OSTMASK_BODY_SCROLL_LOCKED_POSITION_FIXED = []; } return { afterOpen: function afterOpen() { if (!window.OSTMASK_BODY_SCROLL_LOCKED_POSITION_FIXED.length) { updataScrollState().lock(); } window.OSTMASK_BODY_SCROLL_LOCKED_POSITION_FIXED.push('0'); }, beforeClose: function beforeClose() { window.OSTMASK_BODY_SCROLL_LOCKED_POSITION_FIXED.pop(); if (!window.OSTMASK_BODY_SCROLL_LOCKED_POSITION_FIXED.length) { updataScrollState().release(); } } }; }; var _scrollTop = null; var updataScrollState = function updataScrollState() { return { lock: function lock() { _scrollTop = document.scrollingElement.scrollTop; document.body.style.top = -_scrollTop + 'px'; document.body.style.width = '100%'; document.body.style.position = 'fixed'; }, release: function release() { // scrollTop lost after set position:fixed, restore it back. document.body.style.position = null; document.body.style.top = null; document.scrollingElement.scrollTop = _scrollTop; } }; }; export default preventBgScroll;