Desplazarse a anclas con Vue Router
Dec 05 2020
Necesito una configuración de enlace de anclaje en vuejs para ir a:
<h1 id="apply">Test anchor</h1>
Lo siguiente funciona pero cambia la URL a http: // localhost: 8080 / # / apply
<a href="#apply" class="btn btn-primary mt-3">Apply Now</a>
Si luego actualizo la página, no sabe a dónde ir.
Lo siguiente tampoco me funciona. Ni siquiera se despliega para #aplicar.
<router-link to="/careers/job-1#apply">test</router-link>
¿Cómo configuro enlaces de anclaje con el enrutamiento de vuejs?
Respuestas
1 Dan Dec 05 2020 at 07:51
Agregue una propiedad path
y una hash
a su to
objeto:
<router-link :to="{ path: '/careers/job-1', hash: '#apply' }">test</router-link>
Y agregue scrollBehavior
a la definición de su enrutador:
const router = new VueRouter({
...
scrollBehavior (to, from, savedPosition) {
if (to.hash) {
return {
selector: to.hash,
behavior: 'smooth'
};
}
return { x: 0, y: 0 }; // Go to the top of the page if no hash
},
...
})
Ahora debería desplazarse (suavemente, a menos que elimine esa behavior
propiedad) hasta el ancla definida por el hash