2014-07-02 58 views
0

我在我的網站頂部有一個浮動導航欄,我使用以下代碼滾動到各種div定位點。滾動以固定不同的偏移量

<script type="text/javascript"> 
$(document).ready(function() { 
$('a[href^="#"]').on('click', function (e) { 
    e.preventDefault(); 

    var target = this.hash, 
     $target = $(target); 

    $('html, body').stop().animate({ 
     'scrollTop': $target.offset().top - 100 // floatnav height 
    }, 900, 'swing', function() { 
     window.location.hash = '1' + target; 
    }); 
}); 
}); 
</script> 

我希望能夠使不同的偏移取決於錨點。其中一些是全頁面圖像,不需要偏移,因爲在導航欄後沒有任何東西真的丟失,而有些則以文本開始,因此導航欄需要位於其上方,以便它不會隱藏內容。

+0

把它們放在自己的'

's中,然後給它們適當的'padding-top'和'margin-top'來取消額外的填充。 – Ryan

+0

不會在頁面上創建大的空白空間嗎? –

+0

「帶有」margin-top「,取消了額外的填充」 – Ryan

回答

0

你可以存儲偏移每個部分在目的錨點的屬性,如:

<a name="example" data-offset="100">Example</a>

然後,您可以從點擊處理程序中訪問此屬性如下:

var offset = $(target).attr('data-offset')

然後,您只需從元素的偏移量中減去額外的偏移量即可。

+0

我不確定在上面的代碼中將var offset = $(target).attr('data-offset')放到哪裏以使其工作。 –

+0

@ChrisTraverse就在你定義$ target後就可以了。然後你可以在jQuery動畫方法中減去偏移量:$ target.offset()。top - offset – athms

+0

這就是我的想法,但它似乎並不奏效。只是所以我知道我們都在相同的波長,這裏是添加的代碼,默認偏移量設置爲零。儘管第二個鏈接的手動偏移量爲100,但每個鏈接都爲零。http://jsfiddle.net/56pLq/ –

相關問題