2
A
回答
1
我想這是你想要的東西:http://fiddle.jshell.net/hainawa/u5e2s/show/light/
HTML:
<div id="section-1" class="section">section-1 <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></div>
<div id="section-2" class="section">section-2 <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></div>
<div id="section-3" class="section">section-3 <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></div>
<div id="section-4" class="section">section-4 <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></div>
的JavaScript(依賴於jQuery的):
$(function() {
var $secitions = $(".section"),
topArrays = {};
$secitions.each(function(i, ele) {
var $section = $secitions.eq(i),
secTop = $section.offset().top;
topArrays[secTop] = $section.attr("id");
});
$(document,window).scroll(function(e) {
var $ele = $(e.currentTarget),
currentTop = $ele.scrollTop(),
currentHash, arrayHash, topDiff;
for(var i in topArrays) {
arrayHash = topArrays[i];
topDiff = currentTop - i;
currentHash = document.location.hash;
//It's impossable to scroll to the section without any offset
if(topDiff > 0 && topDiff < 100 && currentHash != arrayHash) {
document.location.hash = arrayHash;
}
}
});
});
但這裏也存在一些問題:
- 如果你是usin g圖像延遲加載,它不會工作;
- 代碼的性能不是很高;
- history.pushState是更好然後分配值的location.hash,但每一個瀏覽器不支持它。
如果任何人有更好的解決方案,我會很感激,因爲我一直在考慮它很長一段時間。
相關問題
- 1. Zend_Navigation_Page_Mvc和片段標識符
- 2. 四郎登錄與片段標識符
- 3. 從片段標識符中刪除#
- 4. Symfony2 - 路由到片段標識符
- 5. 處理GWT歷史片段標識符
- 6. PhantomJS滾動捕獲片段標識符
- 7. 如何防止片段標識符在URL
- 8. 如何檢測Url映射中的片段標識符?
- 9. 如何在URL中的片段標識符中編碼空間
- 10. 如何在郵件上讀寫/保留片段標識符
- 11. Django。如何重定向到帶有片段標識符的url
- 12. 如何在Chrome擴展中匹配URL和片段標識符?
- 13. 如何從URL中刪除片段標識符?
- 14. 如何在JSP中檢索URL片段標識符
- 15. 如何導航到帶有片段標識符的url?
- 16. 片段取決於android中的另一個片段
- 17. 如何從HttpServletRequest獲取URL片段標識
- 18. 取決於被管理對象片段的顯示圖標
- 19. 如何從R中的包含片段標識符的url中獲取數據?
- 20. 如何維護片段取決於後退按鈕?
- 21. 未解決的標識符
- 22. 未解決的標識符
- 23. 任何方式來調用Python中的片段標識符'#'
- 24. 如果URL有片段標識符(#),UIWebview加載請求失敗
- 25. 如何在Android類中爲片段生成標識或標籤
- 26. URL中片段標識符的有效字符列表?
- 27. 如何更改圖標取決於移動沒有,電子郵件標識
- 28. 取決於標誌
- 29. CSS選擇元素基於href屬性中的片段標識符
- 30. 不同的片段添加到基於活動意向指定的標識符
見http://stackoverflow.com/questions/5315659/jquery-change-hash-while-scolling-down-page(並不完全是重複的,因爲這個問題讓jQuery和也想更新菜單項,但絕對是近乎愚蠢的) – 2013-05-09 03:50:38