我已經寫了一個腳本,它將滾動(> = 100)上的元素.wrap
向下移動到DOM下方,然後在移動的元素到達後將其設置爲position:fixed; top:0;
頁面頂部。在DOM中滾動移動元素,稍後鎖定到屏幕頂部
結果很不幸的是越野車。元素移動位置,稍後鎖定到屏幕頂部,但是當您嘗試向上滾動頁面時,當您滾動
時,重定位元素(現在鎖定到頁面頂部)會閃爍,我也剛剛意識到當您滾動到頁面頂部
(問題已解決,請參閱下面的註釋)時,.wrap
不會移回原始位置。我也關注性能,因爲我正在使用滾動事件處理程序。
有關此問題的示例,請參閱此Fiddle。
作爲獎勵,我試圖在元素移動之前添加淡入/淡出。任何幫助在這裏將不勝感激。
$(window).scroll(function() {
if ($(this).scrollTop() >= 100) {
/*$('.wrap').fadeOut('slow');
$.when(setTimeout(function() {
$('.wrap').insertAfter('.jumbotron').addClass('moved');
}, 2000)).then(function() {
$('.wrap.moved').fadeIn('slow');
});*/
$('.wrap').insertAfter('.jumbotron').addClass('moved');
var stickyHeader = $('.wrap.moved').offset().top;
$(window).scroll(function() {
if ($(window).scrollTop() > stickyHeader) {
$('.wrap.moved').css({
position: 'fixed',
top: '0px'
});
} else {
$('.wrap.moved').css({
position: 'static',
top: '0px'
});
}
})
} else {
$('.wrap').insertBefore('.space').removeClass('moved');
}
});
OK,只是補充一點,我已經解決滾動<100的問題是具體到時發出.wrap不搬回原來的位置我dev版本,只是錯誤類的組合,需要應用位置:相對於'.moved'。 – Luke