gpt4 book ai didi

javascript - 修复了滚动停止在 div 上的侧边栏

转载 作者:太空宇宙 更新时间:2023-11-03 18:23:22 25 4
gpt4 key购买 nike

我尝试确保 div“过滤器”在滚动时固定,然后在滚动到“outside_footer_wrapper”时停止。使用以下脚本但无法使其正常工作?

jsfiddle

$(function() {
var top = $('#filter').offset().top - parseFloat($('#filter').css('marginTop').replace(/auto/, 0));
var footTop = $('#outside_footer_wrapper').offset().top - parseFloat($('#outside_footer_wrapper').css('marginTop').replace(/auto/, 0));

var maxY = footTop - $('#filter').outerHeight();

$(window).scroll(function(evt) {
var y = $(this).scrollTop();
if (y > top) {
if (y < maxY) {
$('#filter').addClass('fixed').removeAttr('style');
} else {
$('#filter').removeClass('fixed').css({
position: 'absolute',
top: (maxY - top) + 'px'
});
}
} else {
$('#filter').removeClass('fixed');
}
});
});

最佳答案

如果你想在到达页脚后停止 position:fixed,你可以用 top 做这样的事情:

$(function() {
var top = $('#filter').offset().top,
footTop = $('#outside_footer_wrapper').offset().top,
maxY = footTop - $('#filter').outerHeight();
$(window).scroll(function(evt) {
var y = $(this).scrollTop();
if (y > top) {
$('#filter').addClass('fixed').removeAttr('style');
if (y > maxY-20){
var min = y - maxY + 20;
$('#filter').css('top','-'+min+'px');
}
} else {
$('#filter').removeClass('fixed');
}
});
});

还要注意 fixed 类的 CSS,你需要使它具有与 #filter 相同的特异性,我做了这个改变:

#sidebar #filter.fixed /*Add #sidebar*/

检查这个 Demo Fiddle

关于javascript - 修复了滚动停止在 div 上的侧边栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21408441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com