【问题标题】:Navbar fixed top pos. absolute change to relative when scroll导航栏固定顶部位置。滚动时绝对更改为相对
【发布时间】:2013-07-24 19:47:49
【问题描述】:

当滚动超过 600 像素时,我想将导航栏的固定顶部位置从绝对位置更改为相对位置。 我有这个代码:

   if (scroll >= 700) {
    $(".navbar-fixed-top").addClass("navbar-scroll");
  } else {
    $(".navbar-fixed-top").removeClass("navbar-scroll");
   }
});

这是可行的,但我试图将其更改为动画(用于过渡)

我这样做了:

 if (scroll >= 700) {
                $(".navbar-fixed-top").animate ({
        position: 'fixed'
        }, "slow"); 
} else {
                $(".navbar-fixed-top").animate ({
        position: 'absolute'
        }, "slow");
 }
});

这不起作用,为什么?

【问题讨论】:

  • 我认为缺少脚本的开头,请发布完整代码

标签: jquery css navbar


【解决方案1】:

您无法通过 JQUERY API DOCS 为 css 属性 position 设置动画:

所有动画属性都应动画为单个数值,除非以下说明; 大多数非数字属性无法使用基本的 jQuery 功能进行动画处理(例如,宽度、高度或左侧可以进行动画处理,但背景颜色不能,除非 jQuery.Color() 插件是用过的)。除非另有说明,否则属性值被视为像素数。如果适用,可以指定单位 em 和 %。

http://api.jquery.com/animate/

【讨论】:

    【解决方案2】:

    鉴于您无法为 position 属性设置动画,只需使用绝对定位并为 top 值设置动画即可。

    Working Example

    $(window).scroll(function () {
        var scroll = $(window).scrollTop();
        if (scroll >= 700) {
            $(".navbar-fixed-top").animate({
                top: scroll + 10
            }, 50);
        } else {
            $(".navbar-fixed-top").animate({
                top: '10px'
            },50);
        }
    });
    

    【讨论】:

    • 我不明白,在您的示例中,导航栏固定在顶部,直到滚动为 700 像素,然后消失。但我想要完全相反,我的意思是,导航栏在 700px 之后得到固定顶部,在此之前它仍然是顶部(绝对,不固定)。看这里的例子:getflywheel.com,滚动 800px,你会看到一个导航栏出现
    • @user2606561 抱歉,我翻转了操作员查看更新
    • 它现在可以工作了,谢谢!但是当滚动> = 700时如何更改导航栏固定顶部的背景颜色? p.s.:我怎样才能给你+1?
    • @user2606561 您还不能投票,但您可以通过单击答案旁边的复选标记将答案标记为已接受,请参阅meta.stackexchange.com/a/5235/217863 了解更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多