HTML / CSS подход
Если вы ищете опцию, которая не требует большого количества JavaScript (и всех проблем, которые с ним связаны, таких как вызовы событий быстрой прокрутки), можно получить то же поведение, добавив оболочку <div>
и пару стилей. Я заметил гораздо более плавную прокрутку (без отставания элементов), когда использовал следующий подход:
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');
});
Конечно, этот подход можно изменить для областей прокрутки, которые получают / теряют контент во время выполнения (что может привести к добавлению / удалению полос прокрутки).