J'ai une grande table avec une barre de défilement verticale. Je voudrais faire défiler jusqu'à une ligne spécifique dans ce tableau en utilisant jQuery / Javascript.
Existe-t-il des méthodes intégrées pour ce faire?
Voici un petit exemple pour jouer avec.
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
la source
la source
scrollTo
centré plutôt qu'en haut:scrollTo.offset().top - container.offset().top + container.scrollTop() - (container.height()/2)
element.scrollIntoView()
- c'est tout ce qu'il faut. L'animation est standardisée. Voir developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoViewJe me rends compte que cela ne répond pas au défilement dans un conteneur, mais les gens le trouvent utile:
Nous sélectionnons à la fois html et body car le scroller de document peut être sur l'un ou l'autre et il est difficile de déterminer lequel. Pour les navigateurs modernes, vous pouvez vous en sortir
$(document.body)
.Ou, pour aller en haut de la page:
Ou sans animation:
OU...
la source
$('html,body')
? Il n'a besoin que dans un conteneur spécifique. La réponse acceptée est meilleure pour moi. J'ai un cas similaire comme la question posée et votre réponse n'a pas fonctionné pour moi.Je suis d'accord avec Kevin et les autres, utiliser un plugin pour cela est inutile.
la source
J'ai réussi à le faire moi-même. Pas besoin de plugins. Découvrez mon essentiel :
la source
No need for any plugins
?? Mais vous utilisez jQuery! C'est une énorme bibliothèque, pas même un plugin.Vous pouvez utiliser la
scrollIntoView()
méthode en javascript. juste donnerid.scrollIntoView();
Par exemple
la source
Vous pouvez utiliser le plugin jQuery scrollTo plugin:
la source
Faire défiler l'élément jusqu'au centre du conteneur
Amener l'élément au centre du conteneur.
DEMO sur CODEPEN
JS
HTML
css
Il n'est pas exact au centre mais vous ne le reconnaîtrez pas sur des éléments plus grands et plus grands.
la source
Vous pouvez faire défiler par jQuery et JavaScript Juste besoin de deux éléments jQuery et ce code JavaScript:
Afficher l'extrait de code
la source
J'ai fait une combinaison de ce que d'autres ont posté. C'est simple et lisse
la source
Je ne sais pas pourquoi personne ne dit l'évidence, car il existe une
scrollTo
fonction javascript intégrée:Référence .
la source
Contrairement à ce que la plupart des gens ici sont ce qui suggère, je vous recommande de faire utiliser un plug - in si vous voulez animer le mouvement. Il ne suffit pas d'animer scrollTop pour une expérience utilisateur fluide. Voir ma réponse ici pour le raisonnement.
J'ai essayé un certain nombre de plugins au fil des ans, mais j'ai fini par en écrire un moi-même. Vous voudrez peut-être lui donner un spin: jQuery.scrollable . En utilisant cela, l'action de défilement devient
Mais ce n'est pas tout. Nous devons également fixer la position cible. Le calcul que vous voyez dans d'autres réponses,
fonctionne principalement mais n'est pas entièrement correct. Il ne gère pas correctement la bordure du conteneur de défilement. L'élément cible est défilé trop haut, de la taille de la bordure. Voici une démo.
Par conséquent, une meilleure façon de calculer la position cible est
Encore une fois, regardez la démo pour la voir en action.
Pour une fonction qui renvoie la position cible et fonctionne à la fois pour les conteneurs de défilement fenêtre et non-fenêtre, n'hésitez pas à utiliser cet élément essentiel . Les commentaires qui y figurent expliquent comment la position est calculée.
Au début, j'ai dit qu'il serait préférable d'utiliser un plugin pour le défilement animé . Vous n'avez cependant pas besoin d'un plugin si vous souhaitez accéder à la cible sans transition. Voir la réponse de @James pour cela, mais assurez-vous de calculer correctement la position cible s'il y a une bordure autour du conteneur.
la source
Pour ce que ça vaut, c'est comme ça que j'ai réussi à réaliser un tel comportement pour un élément général qui peut être à l'intérieur d'un DIV avec défilement (sans connaître le container)
Il crée une fausse entrée de la hauteur de l'élément cible, puis y met l'accent, et le navigateur se charge du reste, quelle que soit la profondeur de la hiérarchie déroulante. Fonctionne comme un charme.
la source
J'ai fait cette combinaison. son travail pour moi. mais face à un problème si le clic clique sur cette taille de div est trop grande pour que scenerio défile pas vers le bas pour cette div particulière.
la source