【问题标题】:How to scroll div with page without position: fixed?如何在没有位置的页面上滚动 div:固定?
【发布时间】:2015-10-28 22:36:01
【问题描述】:

我找到了这个脚本:

$(function(){
var btn = $('.social');
var btnPosTop = btn.offset().top;
var win = $(window);
win.scroll(function(e){
var scrollTop = win.scrollTop();
if(scrollTop >= btnPosTop){
btn.css({position:'fixed',left:'82%'});
}else if(btn.css('position') === 'fixed'){
btn.css({position:'',left:''});
}
});
});

效果很好。我将原始字段更改为“.social”,以便它可以与我的代码一起使用。

不过,我并不是在寻找“左:82%”的废话修复。 我想避免这个位置:固定;并简单地滚动它所在的 div。

我的树是#container .contain .single-content .social

位置:固定是我的主要问题,但如果你知道,那么一旦 .social 到达 .single-content 的最底部就停止它会是一个主要优点!!

希望我已经提供了足够的信息。

HTML:

<div id='container'>
<div class='contain'>
<div class='single-content'>
<div class='first'>
<div class='social'>

content here.. no p tags.. just facebook, twitter buttons etc.

</div>
</div>
</div>
</div>
</div><!-- container -->

编辑: 有问题的网站:thelackof.com

你可以看到社交图标是如何因为我的左手而偏移的:82% 如果我删除 left:,那么新的 position: fixed 会将我的 div 跳出包含 div 并一直跳到下一个包含 div 的左侧。

我希望它留在原处并在到达时向下滚动。

【问题讨论】:

  • 请发布实际的 HTML(重要部分)。
  • 更新问题,不要在cmets部分发帖。
  • edit您的问题包括minimal reproducible example。请实际阅读前面的链接,并确保您在在您的问题中发布的代码是最少(仅是重现所需的最少代码),完整 b>(重现所需的所有代码)和 verifiable(我们可以仅使用您问题中的代码重现问题)。 在您的问题中没有适当的 MCVE,这个问题对于 Stack Overflow 来说太宽泛了。
  • 不不不。我被要求通过“编辑”提供我的 HTML,我做到了。然后,当没有人了解“大局”时,我继续更新我的问题。因此,我的问题按原样存在。我的代码很少,因为它包含所需的内容。我的问题非常完整,是的,它是可以验证的。无论如何感谢纳粹。

标签: javascript jquery html css scroll


【解决方案1】:

编辑编号。 2:首先:

所以它会得到一个不会干扰主要内容的值:

#container .contain .single-content .first .social {
    float: left;
    position: absolute;
    width: 15%;
    right: 0;
}

然后这个:

$(function(){
var btn = $('.social');

var btnPosTop = btn.offset().top;
var win = $(window);
win.scroll(function(e){
var scrollTop = win.scrollTop();
if(scrollTop >= btnPosTop){
btn.css({position:'fixed'});
}else if(btn.css('position') === 'fixed'){
btn.css({position:''});}
if (btnPosTop >= $('.single-content').offset().top-92){
    btn.css({position:''});
}
});
});

我可能把你的问题弄错了,但我认为这就是你所要求的。我删除了 left 属性。

希望对你有帮助:)

编辑:我已添加:

if (btnPosTop >= $('.single-content').offset().top){
    btn.css({position:''});
}

所以它会滚动直到 btnPosTop 大于 offset().top of .single-content

如果有效,请告诉我

【讨论】:

  • 对不起,我只添加了左边:作为临时修复。需要 .social,即在到达时滚动,以便在到达时准确地停留在原处(停留在 div 的右侧)。相反,它会跳转到包含位置的 div 的最左侧:固定。我需要这种情况不要发生。
  • 您不想让.social 获得position:fixed
  • 不,当我第一次在网上找到它时,这就是脚本的制作方式。 “固定”使我的.social 与我的页面不同步,并将其跳转到包含 div 的最左侧(.first)。所以我需要修改固定,以便社交保持在原处(位置:相对;),但 .social 不会随着我的页面以相对位置滚动。
  • 问题在于固定项目“没有高度和宽度”,这就是它“忽略”左侧所有内容的原因。正在寻找答案!
  • 谢谢!有趣的是,我永远不会想到“固定”背后的实际高度或宽度。谢谢你帮我解决这个问题。
猜你喜欢
  • 2015-05-04
  • 1970-01-01
  • 1970-01-01
  • 2017-11-19
  • 2016-09-11
  • 1970-01-01
  • 2015-12-30
  • 2011-04-19
  • 2017-12-21
相关资源
最近更新 更多