HTML/CSS Approche
Si vous êtes à la recherche d'une option qui ne nécessite pas beaucoup de JavaScript (et et tous les problèmes qui vont avec, comme la rapidité de défilement des événements d'appels), il est possible d'obtenir le même comportement en ajoutant un wrapper <div>
et un couple de styles. J'ai remarqué que beaucoup plus lisse de défilement (pas d'éléments à la traîne) lorsque j'ai utilisé la méthode suivante:
JS Fiddle
HTML
<div id="wrapper">
<div id="fixed">
[Fixed Content]
</div><!-- /fixed -->
<div id="scroller">
[Scrolling Content]
</div><!-- /scroller -->
</div><!-- /wrapper -->
CSS
#wrapper { position: relative; }
#fixed { position: fixed; top: 0; right: 0; }
#scroller { height: 100px; overflow: auto; }
JS
//Compensate for the scrollbar (otherwise #fixed will be positioned over it).
$(function() {
//Determine the difference in widths between
//the wrapper and the scroller. This value is
//the width of the scroll bar (if any).
var offset = $('#wrapper').width() - $('#scroller').get(0).clientWidth;
//Set the right offset
$('#fixed').css('right', offset + 'px');
});
Bien sûr, cette approche pourrait être modifié pour le défilement des régions qui gagnent/perdent le contenu au cours de l'exécution (ce qui aurait pour résultat de l'ajout et de la suppression des barres de défilement).