Maison > interface Web > tutoriel CSS > Comment implémenter un défilement fluide et synchronisé entre deux divs avec jQuery ?

Comment implémenter un défilement fluide et synchronisé entre deux divs avec jQuery ?

Barbara Streisand
Libérer: 2024-10-25 13:38:02
original
478 Les gens l'ont consulté

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

Défilement synchronisé rendu fluide

La mise en œuvre du défilement synchronisé entre deux DIV à l'aide de jQuery peut être réalisée avec le code suivant :

$(document).ready(function() {
    $("#div1").scroll(function () {
        $("#div2").scrollTop($("#div1").scrollTop());
    });
    $("#div2").scroll(function () {
        $("#div1").scrollTop($("#div2").scrollTop());
    });
});
Copier après la connexion

Cependant, ce code rencontre deux défis :

1. Défilement non synchronisé en raison de différentes tailles de division

Le calcul de la position de défilement proportionnelle nécessite de déterminer le pourcentage de contenu défilé. Ceci peut être réalisé en utilisant :

percentage = this.scrollTop / (this.scrollHeight - this.offsetHeight);
Copier après la connexion

Multiplier la hauteur et le décalage de l'autre div par ce pourcentage garantit un défilement proportionnel.

2. Défilement pas si fluide dans Firefox

Pour éviter une boucle infinie d'événements de défilement dans Firefox, envisagez de dissocier temporairement l'écouteur :

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);
Copier après la connexion

Cette solution désengage l'écouteur avant d'ajuster le scrollTop, le relie après un bref délai et assure un défilement fluide dans Firefox.

Pour démontrer cette solution, consultez le JSFiddle interactif : http://jsfiddle.net/b75KZ/5/

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal