您可以element.scrollTop / (element.scrollHeight - element.offsetHeight)
用来获取百分比(它将是0
和之间的一个值1
)。因此,您可以将其他元素(.scrollHeight - .offsetHeight)
与此值乘以进行比例滚动。
为了避免在循环中触发侦听器,您可以暂时取消绑定该侦听器,设置scrollTop
并重新绑定。
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);
// Firefox workaround. Rebinding without delay isn't enough.
setTimeout( function(){ $other.on('scroll', sync ); },10);
}
$divs.on( 'scroll', sync);