Me gustaría hacer que el navegador desplace la página a un anclaje determinado, simplemente usando JavaScript.
He especificado un atributo name
o id
en mi código HTML:
<a name="anchorName">..</a>
o
<h1 id="anchorName2">..</h1>
Me gustaría obtener el mismo efecto que obtendrías navegando http://server.com/path#anchorName
. La página debe desplazarse para que el ancla esté cerca de la parte superior de la parte visible de la página.
<a href="#anchorName">link</a>
function scrollToHash(hashName) { location.hash = "#" + hashName; }
Manera más simple:
fuente
scrollIntoViewOptions
que tiene unabehavior: "smooth"
opción, pero actualmente solo es compatible con Firefox.Puede usar jQuerys .animate () , .offset () y
scrollTop
. Me gustaenlace de ejemplo: http://jsbin.com/unasi3/edit
Si no desea animar, use .scrollTop () como
o javascripts nativos
location.hash
comofuente
<h1 id="anchorName">
o an<a name="anchorName">
, use$('#'+hash+',a[name='+hash+']')
u ligeramente optimizado,$(document.getElementById(hash) || 'a[name='+hash+']')
que buscará el elemento por ID primero, y recurrirá a buscar los a's solo si no se encuentra uno.$("#selector")
está optimizado, pero$("#selector,a[name='selector']")
no pasaré por las mismas optimizaciones tan rápido. Supongo que mi comentario de 2.5 años es un poco extraño. La "optimización" está evitando laa[name='selector']
búsqueda si encuentra la identificación, no optimizando la búsqueda de la identificación.Gran solución de jAndy, pero el desplazamiento suave parece tener problemas para trabajar en Firefox.
Escribirlo de esta manera también funciona en Firefox.
fuente
2018-2020 Pure js:
Hay una forma muy conveniente de desplazarse al elemento:
Pero por lo que yo entiendo, él no tiene un apoyo tan bueno como las opciones a continuación.
Aprende más sobre el método.
Si es necesario que el elemento esté en la parte superior:
Ejemplo de demostración en Codepen
Si desea que el elemento esté en el centro:
Ejemplo de demostración en Codepen
Apoyo:
Escriben que
scroll
es el mismo método quescrollTo
, pero el soporte se muestra mejor enscrollTo
.Más sobre el método
fuente
Una solución javascript pura sin JQuery. Probado en Chrome e Ie, no probado en IOS
demo: https://jsfiddle.net/jd7q25hg/12/
fuente
En 2018, no necesita jQuery para algo simple como esto. El
scrollIntoView()
método integrado admite unabehavior
propiedad " " para desplazarse sin problemas a cualquier elemento de la página. Incluso puede actualizar la URL del navegador con un hash para que se pueda marcar como favorito.De este tutorial sobre desplazamiento de marcadores HTML , aquí hay una forma nativa de agregar desplazamiento suave a todos los enlaces de anclaje en su página automáticamente:
fuente
Desplácese suavemente a la posición correcta (2019)
Obtenga la
y
coordenada correcta y usewindow.scrollTo({top: y, behavior: 'smooth'})
Con desplazamiento
scrollIntoView
También es una buena opción, pero puede no funcionar perfectamente en algunos casos. Por ejemplo, cuando necesita un desplazamiento adicional . ConscrollTo
solo necesita agregar ese desplazamiento de esta manera:fuente
css html { scroll-behavior: smooth; }
fuente
La solución de CSS-Tricks ya no funciona en jQuery 2.2.0. Lanzará un error de selector:
Lo arreglé cambiando el selector. El fragmento completo es este:
fuente
La mayoría de las respuestas son innecesariamente complicadas.
Si solo quiere saltar al elemento de destino, no necesita JavaScript:
Si desea desplazarse al objetivo animadamente , consulte la respuesta de @ Shahil.
fuente
Esto funciona:
https://jsfiddle.net/68pnkfgd/
Simplemente agregue la clase 'scroll' a cualquier enlace que desee animar
fuente
Este es un script de trabajo que desplazará la página al delimitador. Para la configuración, simplemente proporcione al enlace de anclaje una identificación que coincida con el atributo de nombre del anclaje al que desea desplazarse.
fuente
Sé que esta pregunta es muy antigua, pero encontré una solución jQuery fácil y simple en css-tricks . Ese es el que estoy usando ahora.
fuente
fuente
una solución vue2 ... agregue una propiedad de datos simple para simplemente forzar la actualización
fuente
la forma más fácil de hacer que el navegador desplace la página a un anclaje dado es escribir su style.css * {scroll-behaviour: smooth;} y en su navegación html use #NameOfTheSection
fuente