2011-09-12 40 views
1

是否可以更改滾動條相對於新哈希標籤的位置? 目前,該頁面使用#target滾動到目標元素的頂部,這是正常行爲。有沒有辦法將它移動,以便頁面滾動到比錨定標記更靠後的100px(在錨點標記之前添加額外的100px)?使用#anchors移動具有額外定位的滾動條

不確定是否應該使用錨點或javascript的狡猾位置。不知道我真的能夠改變錨點的位置,所以我希望有一個JavaScript解決方案。

感謝

回答

2

你可以回答結合起來,這樣一個問題:一些額外的邏輯On - window.location.hash - Change?

$(function(){ 
    var win = $(window); //cache your jq objects! 
    function fixScrollTop(){ 
    win.scrollTop(win.scrollTop() + 100); 
    } 
    if(window.location.hash !== ""){ 
    fixScrollTop(); 
    } 
    win.bind('hashchange', fixScrollTop); 
}); 

哦,在#anchor的URL,如果你有控制,你可以(可能取決於您要拍攝的瀏覽器兼容性)將其設置爲帶有ID的任何元素的ID,以使瀏覽器滾動至該ID。

+0

+1與hashchange事件組合 - 整潔的解決方案。請注意,您也可以爲'scrollTop'製作動畫。此外,類似的尼特,但jQuery緩存對窗口的引用,所以我不認爲這是如此重要的在這種情況下。 – harpo

+0

啊,好主意。謝謝。雖然我猜測hashchange事件只會在頁面加載後觸發,也就是說,我已經在該頁面上,然後更改散列?如果我直接加載一個頁面'example.php#target'會在頁面加載時觸發hashchange嗎? –

+0

我所做的更改應該適用於onload – dtanders