滚动到顶部时侧边栏消失
Sidebar disappears when scrolled to top
我现在正在这个网站上工作,在我点击页脚之前让侧边栏跟随。
DEMO SITE
ID : 测试 PASS : 2015
我做的很好,但是当我滚动回到顶部(非常顶部)时,我的侧边栏会自动隐藏它。
当我向下滚动一点点或单击 F5 并刷新时,它会再次出现。
这是我用于此功能的javascript。
$(function(){
var target = $("#subContainer");//select which element you want to follow
var footer = $("footer")//making sidebar stop at footer
var targetHeight = target.outerHeight(true);
var targetTop = target.offset().top;
$(window).scroll(function(){
var scrollTop = $(this).scrollTop();
if(scrollTop > targetTop){
var footerTop = footer.offset().top;
if(scrollTop + targetHeight > footerTop){
customTopPosition = footerTop - (scrollTop + targetHeight)
target.css({position: "fixed", top: customTopPosition + "px"});
}else{
target.css({position: "fixed", top: "10px"});
}
}else{
target.css({position: "static", top: "auto"});
}
});
});
我该如何解决这个问题,以便在我向右向上滚动时显示边栏。
感谢您的宝贵时间!
您只需要在页面滚动到达页面顶部时将其样式恢复为默认样式即可。这个方案可以用来解决那种情况下的问题。
将上面的代码替换为:
$(function(){
var target = $("#subContainer");//select which element you want to follow
var footer = $("footer")//making sidebar stop at footer
var targetHeight = target.outerHeight(true);
var targetTop = target.offset().top;
$(window).scroll(function(){
var scrollTop = $(this).scrollTop();
if(scrollTop > targetTop){
var footerTop = footer.offset().top;
if(scrollTop + targetHeight > footerTop){
customTopPosition = footerTop - (scrollTop + targetHeight)
target.css({position: "fixed", top: customTopPosition + "px"});
}else{
target.css({position: "fixed", top: "10px"});
}
}else{
target.removeAttr("style"); // change is made here
}
});
});
而不是:
target.css({position: "static", top: "auto"});
只需将顶部 css 重置为 0px:
target.css({top: "0px"});
这是因为当我们第一次加载页面时,您在#subContainer 上的原始样式已经 position: fixed
。所以真正唯一改变的是最高排名值。
您应该能够通过仅更改顶部来进一步简化您的代码:
$(window).scroll(function(){
var scrollTop = $(this).scrollTop();
if(scrollTop > targetTop){
var footerTop = footer.offset().top;
if(scrollTop + targetHeight > footerTop){
customTopPosition = footerTop - (scrollTop + targetHeight)
target.css({top: customTopPosition + "px"});
}else{
target.css({ top: "10px"});
}
}else{
target.css({top: "0px"});
}
});
我现在正在这个网站上工作,在我点击页脚之前让侧边栏跟随。
DEMO SITE ID : 测试 PASS : 2015
我做的很好,但是当我滚动回到顶部(非常顶部)时,我的侧边栏会自动隐藏它。
当我向下滚动一点点或单击 F5 并刷新时,它会再次出现。
这是我用于此功能的javascript。
$(function(){
var target = $("#subContainer");//select which element you want to follow
var footer = $("footer")//making sidebar stop at footer
var targetHeight = target.outerHeight(true);
var targetTop = target.offset().top;
$(window).scroll(function(){
var scrollTop = $(this).scrollTop();
if(scrollTop > targetTop){
var footerTop = footer.offset().top;
if(scrollTop + targetHeight > footerTop){
customTopPosition = footerTop - (scrollTop + targetHeight)
target.css({position: "fixed", top: customTopPosition + "px"});
}else{
target.css({position: "fixed", top: "10px"});
}
}else{
target.css({position: "static", top: "auto"});
}
});
});
我该如何解决这个问题,以便在我向右向上滚动时显示边栏。
感谢您的宝贵时间!
您只需要在页面滚动到达页面顶部时将其样式恢复为默认样式即可。这个方案可以用来解决那种情况下的问题。
将上面的代码替换为:
$(function(){
var target = $("#subContainer");//select which element you want to follow
var footer = $("footer")//making sidebar stop at footer
var targetHeight = target.outerHeight(true);
var targetTop = target.offset().top;
$(window).scroll(function(){
var scrollTop = $(this).scrollTop();
if(scrollTop > targetTop){
var footerTop = footer.offset().top;
if(scrollTop + targetHeight > footerTop){
customTopPosition = footerTop - (scrollTop + targetHeight)
target.css({position: "fixed", top: customTopPosition + "px"});
}else{
target.css({position: "fixed", top: "10px"});
}
}else{
target.removeAttr("style"); // change is made here
}
});
});
而不是:
target.css({position: "static", top: "auto"});
只需将顶部 css 重置为 0px:
target.css({top: "0px"});
这是因为当我们第一次加载页面时,您在#subContainer 上的原始样式已经 position: fixed
。所以真正唯一改变的是最高排名值。
您应该能够通过仅更改顶部来进一步简化您的代码:
$(window).scroll(function(){
var scrollTop = $(this).scrollTop();
if(scrollTop > targetTop){
var footerTop = footer.offset().top;
if(scrollTop + targetHeight > footerTop){
customTopPosition = footerTop - (scrollTop + targetHeight)
target.css({top: customTopPosition + "px"});
}else{
target.css({ top: "10px"});
}
}else{
target.css({top: "0px"});
}
});