页面内锚点滚动

页面内锚点滚动

920 发布: 2025/2/20 08:10 本文总阅读量

a标签页面内滚动

  • 场景:单页面顶部有浮动导航高度80像素,当使用<a href="#advantages">位置1</a>点击滚动的时候,元素<div id="advantages">总是会被遮挡80
// 导航滚动
// 获取所有带有锚点链接的元素
const anchorLinks = document.querySelectorAll('a[href^="#"]');
// 为每个锚点链接添加点击事件监听器
anchorLinks.forEach(link => {
    link.addEventListener('click', function (e) {
        // 阻止默认的锚点链接跳转行为
        e.preventDefault();
        // 获取目标元素的 ID
        const targetId = this.getAttribute('href').substring(1);
        // 根据 ID 获取目标元素
        const targetElement = document.getElementById(targetId);
        if (targetElement) {
            // 计算目标元素的顶部位置
            const targetPosition = targetElement.offsetTop;
            // 减去导航栏的高度(80 像素)
            const adjustedPosition = targetPosition - 80;
            // 使用平滑滚动到调整后的位置
            window.scrollTo({
                top: adjustedPosition,
                behavior: 'smooth' // auto、smooth
            });
        }
    });
});