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. 处理GWT历史片段标识符
- 3. Symfony2 - 路由到片段标识符
- 4. PhantomJS滚动捕获片段标识符
- 5. 如何在Chrome扩展中匹配URL和片段标识符?
- 6. 如何在JSP中检索URL片段标识符
- 7. 如何检测Url映射中的片段标识符?
- 8. 如何从URL中删除片段标识符?
- 9. 如何从R中的包含片段标识符的url中获取数据?
- 10. 取决于被管理对象片段的显示图标
- 11. 如何维护片段取决于后退按钮?
- 12. 任何方式来调用Python中的片段标识符'#'
- 13. URL中片段标识符的有效字符列表?
- 14. 如何更改图标取决于移动没有,电子邮件标识
- 15. 如何监控URL中的更改(片段标识符 - URL的锚点部分)
- 16. 如何在Thymeleaf中创建一个动态的URL片段标识符?
- 17. 显示一个div仅当URL没有片段标识符
- 18. Hashtags(片段标识符)VS Javascript历史API
- 19. URL片段标识符 - 简化状态处理(javascript)
- 20. jQuery选项卡不匹配片段标识符
- 21. HTML文档的URL“片段标识符”语义
- 22. Angular2 - 浏览器后退按钮与片段标识符
- 23. 窗体动作属性中的片段标识符
- 24. 包标识符不同于保留的包标识符
- 25. 使用未解决的标识符“metadataItems”
- 26. 未解决的标识符范围
- 27. 使用未解决的标识符
- 28. 未解决标识符错误Swift
- 29. 使用未解决的标识符“MYIMAGE”
- 30. swift 3中未解决的标识符
见http://stackoverflow.com/questions/5315659/jquery-change-hash-while-scolling-down-page(并不完全是重复的,因为这个问题让jQuery和也想更新菜单项,但绝对是近乎愚蠢的) – 2013-05-09 03:50:38