Skip to content

Commit 821aea9

Browse files
committed
simplify fitNavInit logic
- use nav container to get preferred height - only scroll item to midpoint if height changes - don't preemptively unset height on nav
1 parent 993dafc commit 821aea9

File tree

2 files changed

+13
-17
lines changed

2 files changed

+13
-17
lines changed

preview-src/index.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ Est in reque homero principes, meis deleniti mediocrem ad has.
254254
Ex nam suas nemore dignissim, vel apeirian democritum et.
255255

256256
.Antora is a multi-repo documentation site generator
257-
image::multirepo-ssg.svg[Multirepo SSG,250]
257+
image::multirepo-ssg.svg[Multirepo SSG,300]
258258

259259
Make the switch today!
260260

src/js/01-nav.js

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
var navBounds = { encroachingElement: document.querySelector('footer.footer') }
1515
var currentPageItem
1616

17-
window.addEventListener('load', fitNavInit)
17+
window.addEventListener('load', fitNavInit) /* needed if images shift the content */
1818
window.addEventListener('resize', fitNavInit)
1919

2020
if (!menuPanel) return fitNavInit({})
@@ -164,25 +164,21 @@
164164
}
165165

166166
function fitNavInit (e) {
167-
if (e.type) {
168-
window.removeEventListener('scroll', fitNav)
169-
nav.style.height = ''
170-
}
171-
if (window.getComputedStyle(navContainer).position !== 'fixed') {
172-
navBounds.availableHeight = window.innerHeight
173-
navBounds.preferredHeight = nav.getBoundingClientRect().height
174-
fitNav()
175-
window.addEventListener('scroll', fitNav)
176-
}
177-
if (e.type !== 'resize' && currentPageItem) scrollItemToMidpoint(menuPanel, currentPageItem)
167+
window.removeEventListener('scroll', fitNav)
168+
if (window.getComputedStyle(navContainer).position === 'fixed') return
169+
navBounds.availableHeight = window.innerHeight
170+
navBounds.preferredHeight = navContainer.getBoundingClientRect().height
171+
if (fitNav() && e.type !== 'resize' && currentPageItem) scrollItemToMidpoint(menuPanel, currentPageItem)
172+
window.addEventListener('scroll', fitNav)
178173
}
179174

180175
function fitNav () {
181176
var scrollDatum = menuPanel && (menuPanel.scrollTop + menuPanel.offsetHeight)
182-
var occupiedHeight = navBounds.availableHeight - navBounds.encroachingElement.getBoundingClientRect().top
183-
nav.style.height = occupiedHeight > 0
184-
? Math.max(0, Math.round(navBounds.preferredHeight - occupiedHeight)) + 'px'
185-
: ''
177+
var occupied = navBounds.availableHeight - navBounds.encroachingElement.getBoundingClientRect().top
178+
var modified = occupied > 0
179+
? nav.style.height !== (nav.style.height = Math.max(Math.round(navBounds.preferredHeight - occupied), 0) + 'px')
180+
: !!nav.style.removeProperty('height')
186181
if (menuPanel) menuPanel.scrollTop = scrollDatum - menuPanel.offsetHeight
182+
return modified
187183
}
188184
})()

0 commit comments

Comments
 (0)