Initial commit for Hugo site.
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
Original Author: Bramus Van Damme
|
||||
Link to original: https://www.bram.us/2020/01/10/smooth-scrolling-sticky-scrollspy-navigation/
|
||||
|
||||
Most of this code comes courtesy of Bramus Van Damme, with some minor tweaks
|
||||
to get it working for my use case. Thanks, Bramus!
|
||||
*/
|
||||
|
||||
let activeElement = null;
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
const observer = new IntersectionObserver(entries => {
|
||||
if (entries) {
|
||||
const contents = document.getElementById("contents");
|
||||
if (contents) {
|
||||
contents.innerHTML = "Contents";
|
||||
}
|
||||
}
|
||||
entries.forEach(entry => {
|
||||
if (activeElement) {
|
||||
document.querySelectorAll("nav[id='TableOfContents'] li").forEach((node) => {
|
||||
node.classList.add('inactive');
|
||||
node.classList.replace('active', 'inactive');
|
||||
});
|
||||
}
|
||||
if (entry.intersectionRatio > 0) {
|
||||
activeElement = entry.target.getAttribute('id');
|
||||
}
|
||||
if (activeElement) {
|
||||
document.querySelector(`nav[id='TableOfContents'] li a[href="#${activeElement}"]`).parentElement.classList.replace('inactive', 'active');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
const post = document.querySelector(".post");
|
||||
post.querySelectorAll("h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]").forEach((section) => {
|
||||
observer.observe(section);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user