Hola, necesito que cuando visite mi página web y # esté presente en la URL, vaya a esa sección. Entonces, lo que hice fue agregar un script JS
document.addEventListener('DOMContentLoaded', () => { // setupScrolling(); setupTitle(); if (window.location.hash) { const element = document.getElementById(window.location.hash); if (element) { const offset = element.offsetTop; const a = offset - (document.querySelector('header')?.offsetHeight); window.scroll({ top: offset, behavior: 'smooth' }); return false; } } });Este es el script que agregué a mi public/index.html
Pero el comportamiento no es correcto. Una vez que la página se desplaza hacia abajo hasta la sección, volverá automáticamente a la parte superior del sitio y no sé por qué.
Alguien me puede ayudar y decirme que debo hacer?
Realmente no necesitas javascript para hacer esto. Solo puede usar HTML.
Simplemente agregue una identificación a los elementos a los que desea permitir que los usuarios salten.
Luego, cuando la identificación de un elemento está presente en la URL de su página web como un hash, la página se desplazará directamente hacia él cuando se cargue la página.
Por ejemplo, digamos que tengo un elemento con el id 'sección inferior'
<span id="down-section">Down Section in the page</span>El acceso al enlace https://your-domaine.com#down-section saltará directamente a " Sección abajo en la página ".
Es posible que desee agregar un comportamiento suave en este caso particular. Simplemente agregue un código como este a su script javascript:
if (!!document.location.hash){ document.getElementsByTagName('html')[0].style.scrollBehavior = 'smooth'; }