2016-02-20 97 views
2

我正在嘗試製作一個web響應頁面,並且當我向下滾動頁面時,我的問題是將一個div捕捉到固定導航欄中。在滾動時將一個div貼到固定導航欄上

https://jsfiddle.net/56jkmvma/1/

根據窗口大小或縮放,那麼div會要麼沖和下衝的導航欄。

我最好的嘗試是使用scrollTop()來防止scrollTop(value)匹配內容div與導航欄相符的值時進一步滾動頁面,但它僅適用於100%縮放和硬編碼值。

jQuery的

$(window).scroll(function() { 
    var winHeight = $(window).height(); 
    var navHeight = $('.nav').height(); 
    var stopPoint = winHeight - navHeight;// gives position where scrollTop should stop allowing the div to 'snap' to the nav bar 
    var scrollPos = $(window).scrollTop(); 

    if (scrollPos == stopPoint) { 
    $(window).scrollTop(stopPoint); 
    } 
}); 

我也試圖用錨和scrollTo(),但從來沒有得到一個正常工作。打開任何方法,謝謝!

+0

所以你滾動它應該捕捉到並保持連接到導航欄的那一刻?一旦你回滾到頂部它會被取消打印? –

+0

是的,一旦它到達導航欄就會被捕捉,並且當您向另一個方向滾動時也會被取消打印 –

回答

2

如果我沒有理解好,您正在尋找這樣的事情Example

,代碼:

$(document).ready(function(){ 

    var heightNav=$('.nav').height(); 
    var posCon=$('.content').offset().top; 
    var posWin; 
    $(window).on('scroll',function(){ 
    posWin=$(this).scrollTop()+heightNav; 

    if(posWin > posCon){ 
     $('.content').css({ 
     position: 'fixed', 
     top: heightNav, 
     'margin-top':0 

     }); 

    } 

    else { 
     $('.content').css({ 
     position: 'relative', 
     'margin-top':'20em', 
     top:0 

     }); 
    } 

    }); 

}); 
+0

關於您的解決方案的一個重要的事情是,它有效地將內容從正常的文檔流中取出,這通常會導致身體的高度縮小到無。通過在JSBin示例中給出'body'固定的高度,可以克服這個問題。 – NanoWizard

+0

@NanoWizard是的,那只是'滾動'演示。編輯bin和'min-height'添加到'body' –

+0

@itsgoingdown真棒!我不得不將doubleNav加倍,因爲在我滾動瀏覽導航後它只是彈起,但現在它像一個魅力 –

相關問題