Ich habe einen Bildlauf div
und möchte einen Link haben, wenn ich darauf klicke. Dadurch wird ein Bildlauf div
erzwungen, um ein Element darin anzuzeigen. Ich habe sein JavasSript so geschrieben:
document.getElementById(chr).scrollIntoView(true);
Dadurch wird jedoch die gesamte Seite gescrollt, während die Seite div
selbst gescrollt wird . Wie kann man das beheben?
Ich möchte es so sagen
MyContainerDiv.getElementById(chr).scrollIntoView(true);
javascript
html
scroll
Amr Elgarhy
quelle
quelle
SetTimeout
in der$(document).ready({})
Funktion zu verwenden undfocus()
auf das Element zu setzen, zu dem Sie scrollen möchten. Funktioniert für michAntworten:
Sie müssen den oberen Versatz des Elements, in das Sie scrollen möchten, relativ zu seinem übergeordneten Element (dem scrollenden div-Container) abrufen:
Die Variable topPos wird jetzt auf den Abstand zwischen dem oberen Rand des Bildlauf-Div und dem Element eingestellt, das sichtbar sein soll (in Pixel).
Jetzt weisen wir das div an, zu dieser Position zu scrollen, indem wir
scrollTop
:Wenn Sie das Prototyp-JS-Framework verwenden, gehen Sie wie folgt vor:
Auch hier wird das div so gescrollt, dass sich das gewünschte Element genau oben befindet (oder, falls dies nicht möglich ist, so weit wie möglich nach unten gescrollt, damit es sichtbar ist).
quelle
myElement.offsetTop
einen Reflow (Layout-Thrashing) auslöst, der einen Leistungsengpass darstellen kannposition: relative
Andernfalls verbringen Sie viel Zeit mit dem Debuggen, wie ich es gerade getan habe.overflow-y
Eigenschaftscroll
für das übergeordnete Element (scrolling_div
) festlegen , sonst funktionierte es nicht. Der Standard-CSS-Wert für dieoverflow
Eigenschaft istauto
und obwohl es auch manuelles Scrollen ermöglicht, würde der JS-Code nicht funktionieren (nicht einmal mit{psition: relative}
..)h4
danndiv
dannarticle
Tag und nurarticle
für mich gearbeitet.Sie müssten die Position des Elements in dem DIV finden, zu dem Sie einen Bildlauf durchführen möchten, und die Eigenschaft scrollTop festlegen.
Update :
Beispielcode zum Auf- oder Abbewegen
quelle
Methode 1 - Reibungsloses Scrollen zu einem Element innerhalb eines Elements
Methode 2 - Verwenden von Element.scrollIntoView :
Methode 3 - Verwenden des CSS -Bildlaufverhaltens :
quelle
Um ein Element nur bei Bedarf in die Ansicht eines Div zu scrollen, können Sie folgende
scrollIfNeeded
Funktion verwenden:quelle
Code sollte sein:
Sie möchten den Unterschied zwischen der obersten Position des Kindes und der obersten Position des Divs scrollen.
Erhalten Sie Zugriff auf untergeordnete Elemente mit:
und so weiter....
quelle
var chElem = document.getElementById('element_within_div');
und die 3. Zeile lesenvar topPos = divElem.offsetTop;
?Wenn Sie jQuery verwenden, können Sie mit einer Animation wie folgt scrollen:
Die Animation ist optional: Sie können den oben berechneten scrollTop-Wert auch direkt in die scrollTop- Eigenschaft des Containers einfügen .
quelle
Native JS, Cross Browser, Smooth Scroll (Update 2020)
Die Einstellung
ScrollTop
führt zwar zum gewünschten Ergebnis, der Bildlauf ist jedoch sehr abrupt. Die Verwendung einesjquery
reibungslosen Bildlaufs war keine Option. Hier ist eine native Methode, um die Aufgabe zu erledigen, die alle gängigen Browser unterstützt. Referenz - caniuseDas ist es!
Und hier ist ein funktionierender Ausschnitt für die Zweifler -
Update: Wie Sie in den Kommentaren sehen können, scheint
Element.scrollTo()
dies in IE11 nicht unterstützt zu werden. Wenn Sie sich also nicht für IE11 interessieren (das sollten Sie wirklich nicht), können Sie dies in all Ihren Projekten verwenden. Beachten Sie, dass Edge unterstützt wird! Sie lassen Ihre Edge / Windows-Benutzer also nicht wirklich zurück;)Referenz
quelle
scrollTo()
wird möglicherweise in allen gängigen Browsern fürWindow
Objekte unterstützt, wird jedoch in IE oder Edge für Elemente nicht unterstützt.window.scrollTo
nicht soElement.scrollTo
. Versuchen Sie dies beispielsweise in Edge und überprüfen Sie die Konsole: codepen.io/timdown/pen/abzVEMBEs gibt zwei Tatsachen:
1) Die Komponente scrollIntoView wird von Safari nicht unterstützt.
2) JS Framework jQuery kann die Arbeit folgendermaßen erledigen:
quelle
Hier ist eine einfache reine JavaScript-Lösung, die für eine Zielnummer (Wert für
scrollTop
), ein Ziel-DOM-Element oder einige spezielle String-Fälle funktioniert :Und hier sind einige Anwendungsbeispiele:
oder
oder
quelle
Ein weiteres Beispiel für die Verwendung von jQuery und animieren.
quelle
Benutzeranimiertes Scrollen
Hier ist ein Beispiel für das programmgesteuerte
<div>
horizontale Scrollen ohne JQuery . Zum Scrollen vertikal, würden Sie JavaScripts schreiben ersetzenscrollLeft
mitscrollTop
, statt.JSFiddle
https://jsfiddle.net/fNPvf/38536/
HTML
JavaScript
Gutschrift an Dux .
Automatisch animiertes Scrollen
Darüber hinaus finden Sie hier Funktionen zum
<div>
vollständigen Scrollen nach links und rechts. Das einzige, was wir hier ändern, ist, dass wir überprüfen, ob die vollständige Erweiterung des Bildlaufs verwendet wurde, bevor wir einen rekursiven Aufruf zum erneuten Bildlauf ausführen.JSFiddle
https://jsfiddle.net/0nLc2fhh/1/
HTML
JavaScript
quelle
Das hat mir endlich gedient
quelle
Der Browser scrollt automatisch zu einem Element, das den Fokus erhält. Sie können also auch das Element umbrechen, in das Sie scrollen möchten,
<a>...</a>
und dann, wenn Sie einen Bildlauf benötigen, den Fokus darauf setzena
quelle
Verwenden Sie nach Auswahl des Elements einfach die
scrollIntoView
Funktion mit der folgenden Option:Die Antwort für diesen Beitrag lautet also:
quelle
Wenn Sie ein div-Element haben, in das Sie scrollen müssen, versuchen Sie diesen Code
document.querySelector('div').scroll(x,y)
Dies funktioniert bei mir in einem Div mit einer Schriftrolle. Dies sollte bei Ihnen funktionieren, falls Sie mit der Maus über dieses Element zeigen und dann versuchen, nach unten oder oben zu scrollen. Wenn es manuell funktioniert, sollte es auch funktionieren
quelle