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
Barbara StreisandOriginal
2024-10-25 13:38:02395Durchsuche

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());
    });
});

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);

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);

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!

Stellungnahme:
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