Improve navigation scrolling to show full content
- Adjusted IntersectionObserver threshold to 0.7 for better section detection - Added scroll-padding-top to scroll_container to account for header - Added scroll-margin-top to scroll_section for better snap alignment - Updated navigation click handler to scroll with header height offset - Ensures sections are fully visible when navigating
This commit is contained in:
@@ -10,6 +10,9 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
function setupNavigationHighlight() {
|
||||
const sections = document.querySelectorAll('.scroll_section');
|
||||
const navOptions = document.querySelectorAll('.nav_option');
|
||||
const header = document.querySelector('header');
|
||||
const headerHeight = header ? header.offsetHeight : 0;
|
||||
|
||||
const observer = new IntersectionObserver((entries) => {
|
||||
entries.forEach(entry => {
|
||||
if (entry.isIntersecting) {
|
||||
@@ -21,13 +24,17 @@ function setupNavigationHighlight() {
|
||||
}
|
||||
});
|
||||
}, {
|
||||
threshold: 0.5
|
||||
threshold: 0.7,
|
||||
rootMargin: `-${headerHeight}px 0px -40% 0px`
|
||||
});
|
||||
|
||||
sections.forEach(section => observer.observe(section));
|
||||
}
|
||||
|
||||
function setupNavigationClicks() {
|
||||
const header = document.querySelector('header');
|
||||
const headerHeight = header ? header.offsetHeight : 0;
|
||||
|
||||
document.querySelectorAll('.nav_option').forEach(link => {
|
||||
link.addEventListener('click', (event) => {
|
||||
event.preventDefault();
|
||||
@@ -35,7 +42,9 @@ function setupNavigationClicks() {
|
||||
const targetId = link.getAttribute('href');
|
||||
const targetSection = document.querySelector(targetId);
|
||||
if (targetSection) {
|
||||
targetSection.scrollIntoView({
|
||||
const targetPosition = targetSection.getBoundingClientRect().top + window.pageYOffset - headerHeight;
|
||||
window.scrollTo({
|
||||
top: targetPosition,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user