Tengo un div que tiene una gran cantidad de elementos. Selecciono estos elementos dinámicamente haciendo clic en un botón, el desbordamiento es automático en mi caso. Lo que quiero es que cuando un elemento que no está visible se seleccione para desplazar el div para que pueda ser visible. ¿Cómo puedo hacer esto?DIV auto scroll
Respuesta
Usted puede utilizar la propiedad scrollTop de HTMLElement para establecer la cantidad de su contenido se puede desplazar por.
Y puede obtener la cantidad que necesita para desplazarse por offsetTop del elemento al que desea desplazarse.
Por ejemplo, con este código HTML:
<div id="container">
<p id="item-1">foo</p>
<p id="item-2">bar</p>
<p id="item-3">baz</p>
</div>
Usted podría utilizar este JavaScript para desplazar el contenedor div a tercer párrafo:
document.getElementById("container").scrollTop = document.getElementById("item-3").offsetTop;
Cuando se hace clic en el botón y se selecciona un elemento, se llama al método focus() de este elemento seleccionado. esto hará que el desplazamiento automático a su elemento:
<div style="height:80px; overflow:auto;">
<input type="text" id="id1"><br><br>
<input type="text" id="id2"><br><br>
<input type="text" id="id3"><br><br>
<input type="text" id="id4"><br><br>
<input type="text" id="id5"><br><br>
<input type="text" id="id6"><br><br>
</div>
<input type="button" onclick="document.getElementById('id6').focus();">
Esto no parece funcionar para elementos regulares "div" (al menos, no en Safari 4 o Firefox 3). –
No lo intento para Safari, pero Firefox 3 funciona perfectamente. – Canavar
El código que ha escrito allí funciona perfectamente. Sin embargo, si reemplaza los elementos de "entrada" con elementos "div", al enfocar el elemento div no parece desplazarse hacia él. Consulte http://cloud.quintusquill.com/dropbox/ScrollTest.html para ver un ejemplo. –
También podría usar la propiedad DIV's scrollTop o scrollLeft (dependiendo de si el desplazamiento es horizontal o vertical).
He hecho esto antes y he usado un evento setTimeout para hacer que se mueva de forma fluida, en lugar de en 1 movimiento. Esto es sin JQuery tho.
Otra opción más ... anclas.
Asignar cada elemento un identificador único, y cuando se quiere desplazarse a un elemento en particular, ejecute el siguiente código JavaScript:
location.hash = itemID;
... donde itemID
es una variable que contiene el ID del elemento quieres desplazarte a.
Steve
- 1. IE7 CSS Scroll Div Bug
- 2. Moving Div with Scroll
- 3. WPF ListView Databound Drag/Drop Auto Scroll
- 4. Jquery auto refresh div
- 5. CSS, auto resize div?
- 6. 100% altura div y desbordamiento: auto
- 7. Diferencia entre HTML "overflow: auto" y "overflow: scroll"
- 8. ¿Alguna forma de hacer div scroll en el ipad?
- 9. Fading Element on Scroll
- 10. Jquery Nice scroll no funciona
- 11. desplazamiento suave/scroll inercial/impulso scroll
- 12. div con display: margen inline-block 0 auto no centrar
- 13. Div auto-refrescante con jQuery - setTimeout u otro método?
- 14. Altura de CSS: auto no funciona con mi envoltorio div
- 15. desplazamiento de posición del div con "overflow: auto"
- 16. jQuery ordenable - desplazamiento en div con desbordamiento: auto
- 17. Modal box en iPhone no scroll
- 18. CSS overflow-y: visible, overflow-x: scroll
- 19. scroll rápido custom thumb
- 20. GridView con scroll horizontal
- 21. Android Scroll Pagination
- 22. ListView get scroll position?
- 23. jQuery-autocomplete scroll issue
- 24. UITableView scroll direction
- 25. CSS: overflow-y: scroll; desbordamiento-x: Visible
- 26. ¿Cómo puedo hacer que div scroll overflow-x funcione en un navegador móvil?
- 27. Auto Patcher (Efficient Auto Updater)
- 28. JQuery Detect Scroll at Bottom
- 29. reiniciar TextView scroll to top
- 30. jQuery Parallax/Scroll Events Rendimiento
Hay un error tipográfico en js document.getElementById ("contenedor"). ScrollTop –
Gracias Fatih. Fijo. –