diff --git a/core/modules/utils/dom/scroller.js b/core/modules/utils/dom/scroller.js index cc0a3d271..96ec24e6d 100644 --- a/core/modules/utils/dom/scroller.js +++ b/core/modules/utils/dom/scroller.js @@ -73,11 +73,18 @@ PageScroller.prototype.scrollIntoView = function(element) { // returns: new position of the scroll viewport var getEndPos = function(targetPos,targetSize,currentPos,currentSize) { var newPos = currentPos; + // If the target is above/left of the current view, then scroll to it's top/left + if(targetPos <= currentPos) { newPos = targetPos; // If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window } else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) { newPos = targetPos + targetSize - currentSize; + // If the target is big, then just scroll to the top + } else if(currentPos < targetPos) { newPos = targetPos; + // Otherwise, stay where we are + } else { + newPos = currentPos; } // If we are scrolling within 50 pixels of the top/left then snap to zero if(newPos < 50) {