UNPKG

overscroll

Version:
58 lines (44 loc) 1.48 kB
'use strict'; exports.__esModule = true; var _css = require('../css'); var _domData = require('./domData'); // 实际情况下 body documentElement 不会都设置 overflow: scroll // 推荐 html, body { height: 100% } body { overflow: auto; } function compose(funcA, funcB) { return function () { return funcA(funcB.apply(undefined, arguments)); }; } var scrollable = function scrollable(attr) { return function (dom) { return ['overlay', 'scroll', 'auto'].includes((0, _css.get)(dom, attr)); }; }; exports['default'] = function (_ref) { var body = _ref.body, html = _ref.html, target = _ref.target, OVERSCROLLX = _ref.OVERSCROLLX, OVERSCROLLY = _ref.OVERSCROLLY; function hasScrollX(dom) { return dom.scrollWidth > dom.clientWidth && ((0, _domData.hasData)(dom, OVERSCROLLX) || scrollable('overflow-x')(dom)); } function hasScrollY(dom) { return dom.scrollHeight > dom.clientHeight && ((0, _domData.hasData)(dom, OVERSCROLLY) || scrollable('overflow-y')(dom)); } function scrollingElement() { var dom = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : target; return dom === body ? html : dom; } function hasScroll(dom) { return { x: hasScrollX(dom), y: hasScrollY(dom) }; } return { hasScroll: compose(hasScroll, scrollingElement), hasScrollX: compose(hasScrollX, scrollingElement), hasScrollY: compose(hasScrollY, scrollingElement) }; };