Tengo un desplazamiento div
y quiero tener un enlace cuando hago clic en él, lo obligará div
a desplazarse para ver un elemento en su interior. Escribí su JavasSript así:
document.getElementById(chr).scrollIntoView(true);
pero esto desplaza toda la página mientras desplaza la div
propia. ¿Cómo arreglar eso?
Quiero decirlo asi
MyContainerDiv.getElementById(chr).scrollIntoView(true);
javascript
html
scroll
Amr Elgarhy
fuente
fuente
SetTimeout
en la$(document).ready({})
función y establecerfocus()
el elemento al que desea desplazarse. Funciona para míRespuestas:
Debe obtener el desplazamiento superior del elemento que desea desplazar a la vista, en relación con su elemento primario (el contenedor div de desplazamiento):
La variable topPos ahora se establece en la distancia entre la parte superior del div de desplazamiento y el elemento que desea tener visible (en píxeles).
Ahora le decimos al div que se desplace a esa posición usando
scrollTop
:Si está utilizando el prototipo de marco JS, haría lo mismo de esta manera:
Nuevamente, esto desplazará el div para que el elemento que desea ver esté exactamente en la parte superior (o si eso no es posible, desplácese lo más abajo posible para que sea visible).
fuente
myElement.offsetTop
provocará un reflujo (cambio de diseño) que podría ser un cuello de botella en el rendimientoposition: relative
contrario, pasará mucho tiempo depurando como acabo de hacer.overflow-y
propiedadscroll
para el elemento padre (scrolling_div
), de lo contrario no estaba funcionando. El valor predeterminado de CSS para laoverflow
propiedad esauto
y, aunque también hace posible el desplazamiento manual, el código js no funcionaría (ni siquiera con{psition: relative}
...)h4
ydiv
luego lasarticle
etiquetas y soloarticle
funcionó para mí.Tendría que encontrar la posición del elemento en el DIV al que desea desplazarse y establecer la propiedad scrollTop.
Actualización :
Código de muestra para subir o bajar
fuente
Método 1: desplazamiento suave a un elemento dentro de un elemento
Método 2 - Usando Element.scrollIntoView :
Método 3: uso del comportamiento de desplazamiento CSS :
fuente
Para desplazar un elemento a la vista de un div, solo si es necesario, puede usar esta
scrollIfNeeded
función:fuente
El código debe ser:
Desea desplazar la diferencia entre la posición superior del niño y la posición superior del div.
Obtenga acceso a elementos secundarios utilizando:
y así....
fuente
var chElem = document.getElementById('element_within_div');
y leer la tercera líneavar topPos = divElem.offsetTop;
?Si está utilizando jQuery, puede desplazarse con una animación usando lo siguiente:
La animación es opcional: también puede tomar el valor scrollTop calculado anteriormente y ponerlo directamente en la propiedad scrollTop del contenedor .
fuente
Native JS, Cross Browser, Smooth Scroll (Actualización 2020)
La configuración
ScrollTop
da el resultado deseado, pero el desplazamiento es muy brusco. Usarjquery
tener un desplazamiento suave no era una opción. Así que aquí hay una forma nativa de hacer el trabajo que admite todos los principales navegadores. Referencia - caniuse¡Eso es!
Y aquí hay un fragmento de trabajo para los dudosos:
Actualización: Como puede percibir en los comentarios, parece que
Element.scrollTo()
no es compatible con IE11. Entonces, si no le importa IE11 (realmente no debería), no dude en usarlo en todos sus proyectos. Tenga en cuenta que existe soporte para Edge! Entonces, realmente no estás dejando atrás a tus usuarios de Edge / Windows;)Referencia
fuente
scrollTo()
puede ser compatible con todos los principales navegadores paraWindow
objetos, pero no es compatible con IE o Edge para elementos.window.scrollTo
noElement.scrollTo
. Pruebe esto en Edge, por ejemplo, y verifique la consola: codepen.io/timdown/pen/abzVEMBHay dos hechos:
1) El componente scrollIntoView no es compatible con safari.
2) JS framework jQuery puede hacer el trabajo de esta manera:
fuente
Aquí hay una solución simple de JavaScript puro que funciona para un Número de destino (valor para
scrollTop
), un elemento DOM de destino o algunos casos especiales de Cadena:Y aquí hay algunos ejemplos de uso:
o
o
fuente
Otro ejemplo de uso de jQuery y animate.
fuente
Desplazamiento animado por el usuario
Aquí hay un ejemplo de cómo desplazarse mediante programación
<div>
horizontalmente, sin JQuery . Para desplazarse verticalmente, debería reemplazar las escrituras de JavaScriptscrollLeft
conscrollTop
, en su lugar.JSFiddle
https://jsfiddle.net/fNPvf/38536/
HTML
JavaScript
Crédito a Dux .
Desplazamiento animado automático
Además, aquí hay funciones para desplazarse
<div>
completamente a la izquierda y a la derecha. Lo único que cambiamos aquí es que verificamos si se ha utilizado la extensión completa del desplazamiento antes de realizar una llamada recursiva para volver a desplazarse.JSFiddle
https://jsfiddle.net/0nLc2fhh/1/
HTML
JavaScript
fuente
Esto es lo que finalmente me ha servido.
fuente
el navegador se desplaza automáticamente a un elemento que obtiene el foco, por lo que también puede hacerlo para envolver el elemento al que necesita desplazarse
<a>...</a>
y luego, cuando necesite desplazarse, simplemente establezca el foco en esoa
fuente
Después de seleccionar el elemento, simplemente use la
scrollIntoView
función con la siguiente opción:Entonces la respuesta para esta publicación es:
fuente
dado que tiene un elemento div que necesita para desplazarse dentro, pruebe este código
document.querySelector('div').scroll(x,y)
esto funciona conmigo dentro de un div con un desplazamiento, esto debería funcionar con usted en caso de que apunte el mouse sobre este elemento y luego intente desplazarse hacia abajo o hacia arriba. Si funciona manualmente, también debería funcionar
fuente