Eu tenho uma mesa grande com barra de rolagem vertical. Gostaria de rolar para uma linha específica nesta tabela usando jQuery / Javascript.
Existem métodos internos para fazer isso?
Aqui está um pequeno exemplo para brincar.
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
fonte
fonte
scrollTo
centralizar, e não no topo:scrollTo.offset().top - container.offset().top + container.scrollTop() - (container.height()/2)
element.scrollIntoView()
- isso é tudo o que é necessário. A animação é padronizada. Veja developer.mozilla.org/pt-BR/docs/Web/API/Element/scrollIntoViewSei que isso não responde à rolagem em um contêiner, mas as pessoas acham útil:
Selecionamos html e body porque o scroller de documentos pode estar em um dos dois e é difícil determinar qual deles. Para navegadores modernos, você pode se safar
$(document.body)
.Ou, para ir para o topo da página:
Ou sem animação:
OU...
fonte
$('html,body')
? Ele precisa apenas em contêiner específico. Resposta aceita é melhor para mim. Eu tenho um caso semelhante ao da pergunta e sua resposta não funcionou para mim.Eu concordo com Kevin e outros, o uso de um plugin para isso é inútil.
fonte
Eu consegui fazer isso sozinho. Não há necessidade de plugins. Confira minha essência :
fonte
No need for any plugins
?? Mas você usa jQuery! É uma biblioteca enorme, nem mesmo um plugin.Você pode usar o
scrollIntoView()
método em javascript. apenas dêid.scrollIntoView();
Por exemplo
fonte
Você pode usar o plugin do plugin jQuery scrollTo :
fonte
Role o elemento para o centro do contêiner
Trazer o elemento para o centro do contêiner.
DEMO no CODEPEN
JS
HTML
css
Não é exato para o centro, mas você não o reconhecerá em elementos maiores e maiores.
fonte
Você pode rolar por jQuery e JavaScript. Apenas é necessário dois elementos jQuery e este código JavaScript:
Mostrar snippet de código
fonte
Fiz uma combinação do que os outros postaram. É simples e suave
fonte
Não sei por que ninguém diz o óbvio, pois há uma
scrollTo
função javascript embutida:Referência .
fonte
Ao contrário do que a maioria das pessoas aqui estão sugerindo, eu recomendo que você faça usar um plugin se você quiser animar o movimento. Apenas animar o scrollTop não é suficiente para uma experiência suave do usuário. Veja minha resposta aqui para o raciocínio.
Eu tentei vários plugins ao longo dos anos, mas acabei escrevendo um. Você pode querer dar uma olhada : jQuery.scrollable . Usando isso, a ação de rolagem se torna
Mas isso não é tudo. Também precisamos fixar a posição alvo. O cálculo que você vê em outras respostas,
funciona principalmente, mas não está totalmente correto. Ele não manipula a borda do contêiner de rolagem corretamente. O elemento de destino é rolado para cima demais, pelo tamanho da borda. Aqui está uma demonstração.
Portanto, uma maneira melhor de calcular a posição alvo é
Mais uma vez, dê uma olhada na demonstração para vê-la em ação.
Para uma função que retorna a posição de destino e funciona para contêineres de rolagem de janela e não de janela, fique à vontade para usar essa essência . Os comentários aqui explicam como a posição é calculada.
No começo, eu disse que seria melhor usar um plugin para rolagem animada . Você não precisa de um plug-in, no entanto, se quiser pular para o destino sem uma transição. Veja a resposta de @James para isso, mas certifique-se de calcular a posição de destino corretamente se houver uma borda ao redor do contêiner.
fonte
Pelo que vale, é assim que eu consegui obter esse comportamento para um elemento geral que pode estar dentro de um DIV com rolagem (sem conhecer o contêiner)
Ele cria uma entrada falsa da altura do elemento de destino e, em seguida, coloca um foco nele, e o navegador cuidará do resto, não importa o quão profundo você esteja na hierarquia de rolagem. Funciona como um encanto.
fonte
Eu fiz essa combinação. é trabalho para mim. mas enfrentando um problema, se clicar em mover, o tamanho da div é muito grande para que o cenário não role para baixo até essa div específica.
fonte