【问题标题】:Sticky header after some scrolling?滚动后粘页眉?
【发布时间】:2023-03-30 05:06:01
【问题描述】:

好的,这是我想问的一个例子, usatoday的导航栏。

我正在使用引导词缀。这是我的代码

<div class="header">
  <div class="header-1">
    <h1>this is some logo</h1>
  </div>
  <div class="header-2">
    <h3>this is some heading</h3>
  </div>
</div>
<div class="content" style="height:2500px;">
</div>
<div class="footer">
    this is a footer
</div>

JavaScript

$('.header-2').affix({
});

我怎样才能使 div header-2 固定在顶部,(当有一些滚动并且 div header-2 刚刚到达顶部位置时)就像我之前提到的网站一样?

我很想看到header-1header-2,但是一些滚动应该隐藏header-1 并将header-2 粘贴到最顶部。

谢谢

【问题讨论】:

标签: javascript jquery html twitter-bootstrap affix


【解决方案1】:

看到这个Jsfiddle

您可以检查滑块的位置并相应地添加类

$(window).scroll(function () {
    if( $(window).scrollTop() > $('#header-2').offset().top && !($('#header-2').hasClass('posi'))){
      $('#header-2').addClass('posi');
    } else if ($(window).scrollTop() == 0){
      $('#header-2').removeClass('posi');
    }
});

【讨论】:

  • 谢谢。我期待着用 BS 完全解决这个问题。 :)
  • 这不会导致一些滚动瓶颈吗?
  • 任何滚动事件侦听器都会导致瓶颈,这就是为什么您应该始终限制或消除这些侦听器的原因。
  • 是否有可能header-2不可见而header-1可见,浏览器窗口滚动500px后header-2可见?
【解决方案2】:

用jquery看这个例子 http://jsfiddle.net/5n5MA/2/

var fixmeTop = $('.fixme').offset().top; // Get initial position
$(window).scroll(function() {            // Assign scroll event listener
var currentScroll = $(window).scrollTop(); // Get current position
if (currentScroll >= fixmeTop) { // Make it fixed if you've scrolled to it
    $('.fixme').css({
        position: 'fixed',
        top: '0',
        left: '0'
    });
} else {                       // Make it static if you scroll above
    $('.fixme').css({
        position: 'static'
    });
}

});

【讨论】:

  • 它很有帮助,但我正在寻找引导程序特定的答案。谢谢你的回复:)
【解决方案3】:

使用 Bootstrap.affix() 的自举答案

$('.header-2').affix({
        offset: {
                 top: function () {
                      return (this.top = $(".header-2").offset().top);
                }
        }
});

这也需要 CSS 来进行固定定位(参见Docs)。

词缀插件在三个类之间切换,每个类代表一个 特定状态:.affix、.affix-top 和 .affix-bottom。你必须 自己提供这些类的样式(独立于此 插件)来处理实际位置。

.header-2.affix {
   top: 0;
}

Bootply 的工作示例:http://www.bootply.com/S03RlcT0z0

【讨论】:

    【解决方案4】:
    <style>
      .header {
        top: 0%;
        left: 0%;
        width: 100%;
        position:fixed;
    }
    </style>
    

    很抱歉没有仔细看你的问题。

    这可能会帮助你Issue with Fixed Header and Bootstrap Affix / Scrollspy - Not jumping to correct location

    【讨论】:

    • 我很想看到header-1header-2,但有些滚动应该隐藏header-1 并在最顶部粘贴header-2
    • @John 尝试看起来像这样.. 如果我没有弄错您的问题...您是否坚持只使用引导程序执行此操作? stackoverflow.com/questions/1216114/…
    • 好吧,引导程序上已经有词缀,如果仅使用 BS 完成工作,我会很高兴。如果它已经在 BS 上,为什么还要让浏览器遇到麻烦并提供另一个脚本? !!
    • 我支持你是因为你应得的 :) 不要太依赖 BS,是的,它们很好,但它们会让你像我一样懒惰 :D
    • 谢谢老兄,会考虑你的建议。 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 2012-12-28
    相关资源
    最近更新 更多