From: Pierre Vanduynslager Date: Sun, 19 Mar 2017 01:24:54 +0000 (-0400) Subject: HTMLElement.offset* by getBoundingClientRect() (#21788) X-Git-Tag: v4.0.0-beta~147^2~145 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=275821bbb081890ffe232d50d4778eb15bdb1d7b;p=thirdparty%2Fbootstrap.git HTMLElement.offset* by getBoundingClientRect() (#21788) * Replace element.offet* by getBoundingClientRect() * Use variable to store BoundingClientRect * Fix cc issue... --- diff --git a/js/src/collapse.js b/js/src/collapse.js index 28c4493cc5..ed3c064b16 100644 --- a/js/src/collapse.js +++ b/js/src/collapse.js @@ -211,10 +211,8 @@ const Collapse = (($) => { } const dimension = this._getDimension() - const offsetDimension = dimension === Dimension.WIDTH ? - 'offsetWidth' : 'offsetHeight' - this._element.style[dimension] = `${this._element[offsetDimension]}px` + this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px` Util.reflow(this._element) diff --git a/js/src/modal.js b/js/src/modal.js index 213434f770..9263efd536 100644 --- a/js/src/modal.js +++ b/js/src/modal.js @@ -450,7 +450,7 @@ const Modal = (($) => { const scrollDiv = document.createElement('div') scrollDiv.className = ClassName.SCROLLBAR_MEASURER document.body.appendChild(scrollDiv) - const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth + const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth document.body.removeChild(scrollDiv) return scrollbarWidth } diff --git a/js/src/scrollspy.js b/js/src/scrollspy.js index 66b6080c84..15541b8fff 100644 --- a/js/src/scrollspy.js +++ b/js/src/scrollspy.js @@ -133,12 +133,15 @@ const ScrollSpy = (($) => { target = $(targetSelector)[0] } - if (target && (target.offsetWidth || target.offsetHeight)) { - // todo (fat): remove sketch reliance on jQuery position/offset - return [ - $(target)[offsetMethod]().top + offsetBase, - targetSelector - ] + if (target) { + const targetBCR = target.getBoundingClientRect() + if (targetBCR.width || targetBCR.height) { + // todo (fat): remove sketch reliance on jQuery position/offset + return [ + $(target)[offsetMethod]().top + offsetBase, + targetSelector + ] + } } return null }) @@ -198,7 +201,7 @@ const ScrollSpy = (($) => { _getOffsetHeight() { return this._scrollElement === window ? - window.innerHeight : this._scrollElement.offsetHeight + window.innerHeight : this._scrollElement.getBoundingClientRect().height } _process() {