Tengo una gran mesa con barra de desplazamiento vertical. Me gustaría desplazarme a una línea específica en esta tabla usando jQuery / Javascript.
¿Hay métodos integrados para hacer esto?
Aquí hay un pequeño ejemplo para jugar.
div {
width: 100px;
height: 70px;
border: 1px solid blue;
overflow: auto;
}
<div>
<table id="my_table">
<tr id='row_1'><td>1</td></tr>
<tr id='row_2'><td>2</td></tr>
<tr id='row_3'><td>3</td></tr>
<tr id='row_4'><td>4</td></tr>
<tr id='row_5'><td>5</td></tr>
<tr id='row_6'><td>6</td></tr>
<tr id='row_7'><td>7</td></tr>
<tr id='row_8'><td>8</td></tr>
<tr id='row_9'><td>9</td></tr>
</table>
</div>
javascript
jquery
scroll
Misha Moroshko
fuente
fuente
scrollTo
centrado en lugar de en la parte superior:scrollTo.offset().top - container.offset().top + container.scrollTop() - (container.height()/2)
element.scrollIntoView()
- eso es todo lo que se requiere. La animación está estandarizada. Vea developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoViewMe doy cuenta de que esto no responde al desplazamiento en un contenedor, pero la gente lo encuentra útil, así que:
Seleccionamos html y body porque el desplazador de documentos podría estar activado y es difícil determinar cuál. Para los navegadores modernos puede salirse con la suya
$(document.body)
.O, para ir a la parte superior de la página:
O sin animación:
O...
fuente
$('html,body')
? Solo necesita en un recipiente específico. La respuesta aceptada es mejor para mí. Tengo un caso similar al de la pregunta y su respuesta no me funcionó.Estoy de acuerdo con Kevin y otros, usar un complemento para esto no tiene sentido.
fuente
Me las arreglé para hacerlo yo mismo. No es necesario ningún complemento. Mira mi esencia :
fuente
No need for any plugins
?? ¡Pero usas jQuery! Es una gran biblioteca, ni siquiera un complemento.Puede usar el
scrollIntoView()
método en javascript. solo daid.scrollIntoView();
Por ejemplo
fuente
Puede usar el complemento jQuery scrollTo plugin:
fuente
Desplazar elemento al centro del contenedor
Para llevar el elemento al centro del contenedor.
DEMO en CODEPEN
JS
HTML
css
No es exacto al centro, pero no lo reconocerá en elementos más grandes y más grandes.
fuente
Puede desplazarse por jQuery y JavaScript. Solo necesita dos elementos jQuery y este código JavaScript:
Mostrar fragmento de código
fuente
Hice una combinación de lo que otros han publicado. Es simple y suave
fuente
No estoy seguro de por qué nadie dice lo obvio, ya que hay una función integrada de JavaScript
scrollTo
:Referencia .
fuente
Contrariamente a lo que la mayoría de las personas aquí están sugiriendo, me gustaría recomendar que hace uso de un plugin si desea animar el movimiento. Solo animar scrollTop no es suficiente para una experiencia de usuario fluida. Vea mi respuesta aquí para el razonamiento.
He intentado varios complementos a lo largo de los años, pero finalmente escribí uno yo mismo. Es posible que desee darle una vuelta: jQuery.scrollable . Usando eso, la acción de desplazamiento se convierte
Pero eso no es todo. También necesitamos fijar la posición objetivo. El cálculo que ves en otras respuestas,
En su mayoría funciona, pero no es del todo correcto. No maneja el borde del contenedor de desplazamiento correctamente. El elemento de destino se desplaza hacia arriba demasiado lejos, por el tamaño del borde. Aquí hay una demostración.
Por lo tanto, una mejor manera de calcular la posición objetivo es
Nuevamente, eche un vistazo a la demostración para verla en acción.
Para una función que devuelve la posición de destino y funciona tanto para contenedores de desplazamiento con ventana como sin ventana, siéntase libre de usar esta esencia . Los comentarios allí explican cómo se calcula la posición.
Al principio, he dicho que sería mejor usar un complemento para el desplazamiento animado . Sin embargo, no necesita un complemento si desea saltar al objetivo sin una transición. Vea la respuesta de @James para eso, pero asegúrese de calcular la posición de destino correctamente si hay un borde alrededor del contenedor.
fuente
Por lo que vale, así es como logré lograr ese comportamiento para un elemento general que puede estar dentro de un DIV con desplazamiento (sin conocer el contenedor)
Crea una entrada falsa de la altura del elemento de destino, y luego lo enfoca, y el navegador se encargará del resto sin importar cuán profundo dentro de la jerarquía de desplazamiento se encuentre. Funciona de maravilla.
fuente
Hice esta combinación Es trabajo para mí. pero enfrenta un problema si hacer clic en mover ese tamaño de div es demasiado grande y no desplazarse hacia abajo a este div en particular.
fuente