我已经写了一个脚本,它将滚动(> = 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