diff options
| author | Dan Allen <dan@opendevise.com> | 2018-08-12 20:48:31 -0600 |
|---|---|---|
| committer | Dan Allen <dan@opendevise.com> | 2018-08-12 20:48:31 -0600 |
| commit | 7b835708325e822282d49389391483724aa1908b (patch) | |
| tree | 8d5898e18a9f3edbf933b0de4f7d3f5320cb49c7 /src/js | |
| parent | c7a96c40d97d6521f413d40d530e10fcb472091b (diff) | |
| download | alpine-antora-theme-7b835708325e822282d49389391483724aa1908b.tar.bz2 alpine-antora-theme-7b835708325e822282d49389391483724aa1908b.tar.xz | |
fix scroll into view behavior in navigation
- set position relative on .nav-menu
- remove position relative from .nav-item
- optimize computations for scroll into view
- remove debug statements
Diffstat (limited to 'src/js')
| -rw-r--r-- | src/js/01-navigation.js | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/js/01-navigation.js b/src/js/01-navigation.js index 7108706..9f6fd1f 100644 --- a/src/js/01-navigation.js +++ b/src/js/01-navigation.js @@ -134,22 +134,19 @@ } function scrollItemIntoView (scrollPosition, parent, el) { - console.log('scrolling item into view') - console.log('stored value: ' + scrollPosition) if (!el) return (parent.scrollTop = scrollPosition) var margin = 10 - var overTheTop = el.offsetTop - scrollPosition < 0 - var belowTheBottom = (el.offsetTop - scrollPosition + el.offsetHeight) > parent.offsetHeight + //var y = el.getBoundingClientRect().top - parent.getBoundingClientRect().top + var y = el.offsetTop - if (overTheTop) { - parent.scrollTop = el.offsetTop - margin - } else if (belowTheBottom) { - parent.scrollTop = el.offsetTop - (parent.offsetHeight - el.offsetHeight) + margin + if (y < scrollPosition) { + parent.scrollTop = y - margin + } else if (y - parent.offsetHeight + el.offsetHeight > scrollPosition) { + parent.scrollTop = y - parent.offsetHeight + el.offsetHeight + margin } else { parent.scrollTop = scrollPosition } - console.log('set scrollTop to ' + parent.scrollTop) } function find (selector, from) { |
