From c54bde0a192fa566cf31c13970143a7a8f147eea Mon Sep 17 00:00:00 2001 From: Nolan Lawson Date: Thu, 29 Mar 2018 23:01:36 -0700 Subject: [PATCH] use scrollIntoView which is more consistent than previous strategy --- .../pseudoVirtualList/PseudoVirtualList.html | 21 ++++++------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/routes/_components/pseudoVirtualList/PseudoVirtualList.html b/routes/_components/pseudoVirtualList/PseudoVirtualList.html index 11b83350..9a218875 100644 --- a/routes/_components/pseudoVirtualList/PseudoVirtualList.html +++ b/routes/_components/pseudoVirtualList/PseudoVirtualList.html @@ -75,24 +75,15 @@ } }, methods: { - scrollToPosition(rect) { + scrollToPosition(element) { if (this.get('scrolledToPosition')) { return } this.set({scrolledToPosition: true}) - console.log('scrollToPosition', rect.top) - let container = document.querySelector(this.get('containerQuery')) - if (!container) { - return - } - let containerRect = container.getBoundingClientRect() - let scrollTop = rect.top - containerRect.top - if (scrollTop !== 0) { - requestAnimationFrame(() => { - console.log('setting scrollTop to ', scrollTop) - container.scrollTop = scrollTop - }) - } + requestAnimationFrame(() => { + console.log('scrolling element into view') + element.scrollIntoView(true) + }) }, onIntersection(entries) { mark('onIntersection') @@ -107,7 +98,7 @@ height: rect.height } if (scrollToItem === key) { - this.scrollToPosition(rect) + this.scrollToPosition(entry.target) } } intersectionStates = Object.assign(intersectionStates, newIntersectionStates)