Ich habe einen großen Tisch mit vertikaler Bildlaufleiste. Ich möchte mit jQuery / Javascript zu einer bestimmten Zeile in dieser Tabelle scrollen.
Gibt es dafür eingebaute Methoden?
Hier ist ein kleines Beispiel zum Spielen.
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
Mischa Moroshko
quelle
quelle
scrollTo
eher zentriert als oben wollen:scrollTo.offset().top - container.offset().top + container.scrollTop() - (container.height()/2)
element.scrollIntoView()
- das ist alles was benötigt wird. Die Animation ist standardisiert. Siehe developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoViewMir ist klar, dass dies nicht das Scrollen in einem Container beantwortet, aber die Leute finden es nützlich, also:
Wir wählen sowohl HTML als auch Body aus, da der Dokument-Scroller möglicherweise aktiviert ist und es schwierig ist, festzustellen, welcher. Für moderne Browser können Sie mit durchkommen
$(document.body)
.Oder um zum Anfang der Seite zu gelangen:
Oder ohne Animation:
ODER...
quelle
$('html,body')
? Er braucht nur in bestimmten Container. Akzeptierte Antwort ist besser für mich. Ich habe einen ähnlichen Fall wie die gestellte Frage und Ihre Antwort hat bei mir nicht funktioniert.Ich stimme Kevin und anderen zu, ein Plugin dafür zu verwenden ist sinnlos.
quelle
Ich habe es selbst geschafft. Keine Plugins erforderlich. Schauen Sie sich mein Wesentliches an :
quelle
No need for any plugins
?? Aber du benutzt jQuery! Es ist eine verdammt große Bibliothek, nicht einmal ein Plugin.Sie können die
scrollIntoView()
Methode in Javascript verwenden. Gib einfachid.scrollIntoView();
Beispielsweise
quelle
Sie können das Plugin jQuery scrollTo verwenden :
quelle
Scrollen Sie das Element zur Mitte des Containers
Um das Element in die Mitte des Containers zu bringen.
DEMO zu CODEPEN
JS
HTML
CSS
Es ist nicht exakt zur Mitte, aber Sie werden es bei größeren größeren Elementen nicht erkennen.
quelle
Sie können mit jQuery und JavaScript scrollen. Sie benötigen lediglich zwei jQuery-Elemente und diesen JavaScript-Code:
Code-Snippet anzeigen
quelle
Ich habe eine Kombination aus dem gemacht, was andere gepostet haben. Es ist einfach und glatt
quelle
Ich bin mir nicht sicher, warum niemand das Offensichtliche sagt, da es eine eingebaute Javascript-
scrollTo
Funktion gibt:Referenz .
quelle
Im Gegensatz zu dem, was die meisten Leute hier sind darauf hindeutet, würde ich empfehlen Sie tun ein Plugin verwenden , wenn Sie die Bewegung animieren möchten. Nur das Animieren von scrollTop reicht für eine reibungslose Benutzererfahrung nicht aus. Siehe meine Antwort hier für die Begründung.
Ich habe im Laufe der Jahre eine Reihe von Plugins ausprobiert, aber schließlich selbst eines geschrieben. Vielleicht möchten Sie es ausprobieren : jQuery.scrollable . Damit wird die Bildlaufaktion
Aber das ist nicht alles. Wir müssen auch die Zielposition festlegen. Die Berechnung, die Sie in anderen Antworten sehen,
funktioniert meistens aber ist nicht ganz richtig. Der Rand des Bildlaufcontainers wird nicht richtig behandelt. Das Zielelement wird um die Größe des Rahmens zu weit nach oben gescrollt. Hier ist eine Demo.
Daher ist eine bessere Methode zur Berechnung der Zielposition
Schauen Sie sich noch einmal die Demo an, um sie in Aktion zu sehen.
Für eine Funktion, die die Zielposition zurückgibt und sowohl für Fenster- als auch für Nicht-Fenster- Bildlaufcontainer funktioniert , können Sie diese Übersicht verwenden . Die Kommentare dort erklären, wie die Position berechnet wird.
Am Anfang habe ich gesagt, es wäre am besten, ein Plugin für animiertes Scrollen zu verwenden. Sie benötigen jedoch kein Plugin, wenn Sie ohne Übergang zum Ziel springen möchten. Siehe dazu die Antwort von @James , aber stellen Sie sicher, dass Sie die Zielposition korrekt berechnen, wenn sich um den Container ein Rand befindet.
quelle
Auf diese Weise habe ich es geschafft, ein solches Verhalten für ein allgemeines Element zu erreichen, das sich in einem DIV mit Bildlauf befinden kann (ohne den Container zu kennen).
Es erstellt eine gefälschte Eingabe der Höhe des Zielelements und legt dann einen Fokus darauf. Der Browser kümmert sich um den Rest, egal wie tief Sie sich in der scrollbaren Hierarchie befinden. Klappt wunderbar.
quelle
Ich habe diese Kombination gemacht. seine Arbeit für mich. Wenn Sie jedoch auf "Verschieben" klicken, ist die Div-Größe zu groß, sodass die Szenerie nicht nach unten zu diesem bestimmten Div scrollen kann.
quelle