Heim > Web-Frontend > CSS-Tutorial > Wie implementiert man mit jQuery ein reibungsloses und synchronisiertes Scrollen zwischen zwei Divs?

Wie implementiert man mit jQuery ein reibungsloses und synchronisiertes Scrollen zwischen zwei Divs?

Barbara Streisand
Freigeben: 2024-10-25 13:38:02
Original
394 Leute haben es durchsucht

How to Implement Smooth and Synchronized Scrolling Between Two Divs with jQuery?

Synchronisiertes Scrollen reibungslos gemacht

Das Implementieren eines synchronisierten Scrollens zwischen zwei DIVs mithilfe von jQuery kann mit dem folgenden Code erreicht werden:

$(document).ready(function() {
    $("#div1").scroll(function () {
        $("#div2").scrollTop($("#div1").scrollTop());
    });
    $("#div2").scroll(function () {
        $("#div1").scrollTop($("#div2").scrollTop());
    });
});
Nach dem Login kopieren

Dieser Code stößt jedoch auf zwei Herausforderungen:

1. Unsynchronisiertes Scrollen aufgrund unterschiedlicher Div-Größen

Die Berechnung der proportionalen Scroll-Position erfordert die Bestimmung des Prozentsatzes des gescrollten Inhalts. Dies kann wie folgt erreicht werden:

percentage = this.scrollTop / (this.scrollHeight - this.offsetHeight);
Nach dem Login kopieren

Durch Multiplizieren der Höhe und des Versatzes des anderen Div mit diesem Prozentsatz wird ein proportionales Scrollen sichergestellt.

2. Nicht ganz so reibungsloses Scrollen in Firefox

Um eine Endlosschleife von Scroll-Ereignissen in Firefox zu verhindern, sollten Sie die Bindung des Listeners vorübergehend aufheben:

var $divs = $('#div1, #div2');
var sync = function(e) {
    var $other = $divs.not(this).off('scroll'), other = $other.get(0);
    var percentage = this.scrollTop / (this.scrollHeight - this.offsetHeight);
    other.scrollTop = percentage * (other.scrollHeight - other.offsetHeight);
    setTimeout(function(){ $other.on('scroll', sync ); }, 10);
}
$divs.on( 'scroll', sync);
Nach dem Login kopieren

Diese Lösung deaktiviert den Listener vor der Anpassung Das scrollTop bindet es nach einer kurzen Verzögerung erneut und sorgt für reibungsloses Scrollen in Firefox.

Um diese Lösung zu demonstrieren, sehen Sie sich die interaktive JSFiddle an: http://jsfiddle.net/b75KZ/5/

Das obige ist der detaillierte Inhalt vonWie implementiert man mit jQuery ein reibungsloses und synchronisiertes Scrollen zwischen zwei Divs?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage