2013-03-02 130 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>