2013-03-02 62 views
1

Twitter bootstrap change affix offset可能会有所帮助。据说他基本上有同样的问题,并发布解决方案,我的问题,但我不能让它工作不幸。Twitter引导程序更改DOM上的偏移量更改

这里的引导词缀插件页面(如果你知道不是使用这个插件另一个/更好的办法,我所有的耳朵---不需要此插件):http://twitter.github.com/bootstrap/javascript.html#affix

http://jsfiddle.net/rPsK8/1

这里有一个小提琴哪种帮助显示我的问题......但我无法让Bootstrap Affix出于某种原因做任何事情。 :|

$(function() { 
    $('#contentbody-toolbar').addClass("affix-top").each(function(){ 
    var $self = $(this); 
    if ($("#advanced-total-outer").is(":visible")) { 
    var offsetFn = function() { 
     var $p = $('#advanced-total-outer').outerHeight(); 
     var h = 175 + $p; 
     return h; 
    } 
    $self.affix({offset: {top: offsetFn}}); 
} else { 
    var offsetFn = function() { 
     var h = 175; 
     return h; 
    } 
    $self.affix({offset: {top: offsetFn}}); 
} 
    }); 
}); 

编辑:我简化了上面的代码(应该做同样的事情):

$(function() { 
    $('#contentbody-toolbar').addClass("affix-top").each(function(){ 
    var $self = $(this); 
    var offsetFn = function() { 
     var $p = $('.wrapper.clearfix.no-bord').outerHeight(); 
     var h = 175 + $p; 
     return h; 
    $self.affix({offset: {top: offsetFn}}); 
}; 
    }); 
}); 

但无论如何,这是我的页面是如何设置的,基本上,当你向下滚动和导航bar(#contentbody-toolbar)位于窗口的顶部,它修复了它。现在,问题是,正如你所看到的,我有一个隐藏的div,可以隐藏。所以我需要更新偏移时,该元素不隐藏某种方式。

如果用户愿意,标题也可以更改大小(高度),所以它也需要更新。我上面发布的代码对我来说似乎是合乎逻辑的,它似乎“有用”,因为它可以识别偏移量的变化,但是,如果这样做合理的话,词缀插件不会更新DOM中的变化。滚动175px后它会一直固定。

我一直试图让这个工作几天,老实说,我很沮丧。我真的不知道如何去做这件事。 Stackoverflow的边栏当问一个问题似乎功能如何,但我找不到他们的脚本moveScroller。

非常感谢提供的任何帮助。

回答

1

因此,有我注意到/计算器提到的作品就像我想...好吧,我搜索了,并感谢他们的发现代码它乔希李@How can I make a div stick to the top of the screen once it's been scrolled to?

使用了将近他列出的相同代码:

function moveScroller() { 
    var move = function() { 
     var st = $(window).scrollTop(); 
     var ot = $("#scroller-anchor").offset().top; 
     var s = $("#scroller"); 
     if(st > ot) { 
      s.css({ 
       position: "fixed", 
       top: "0px", 
       width: "61%" 
      }); 
     } else { 
      if(st <= ot) { 
       s.css({ 
        position: "relative", 
        top: "", 
        width: "auto" 
       }); 
      } 
     } 
    }; 
    $(window).scroll(move); 
    move(); 
} 

<script type="text/javascript"> 
    $(function() { 
    moveScroller(); 
    }); 
</script>