这是我正在开发的网站:http: //defend-foreclosure.com
如果您访问http://defend-foreclosure.com/law.html并单击导航中“法律”的下拉链接,您会发现锚点工作得很好。它将每个部分的标题隐藏在标题后面,但我通过将以下脚本添加到我的 html 文件来解决此问题。
<script>
$().ready(function(){
// Fixing Anchor links nav leaving the destination text hidden under Header
$(window).hashchange(function() {
var hash = "#" + location.hash.replace(/[^A-Za-z0-9_\-]/g, "");
if (hash && $(hash).offset()) {
var pos = $(hash).offset().top - 55;
$(window).scrollTop(pos);
}
});
});
</script>
当我尝试从 law.html 以外的任何页面导航到其中一个锚点时,就会出现问题。我认为这与仅适用于 .haschange 的脚本有关,而不是普遍适用。
如果您回到家、关于或联系,并尝试单击下拉列表中的一个锚点,您会注意到它仍然会切断导航下部分的标题。有谁知道我怎样才能使它在所有页面上正常工作?
编辑:
如果我在 .haschange 之外添加以下代码,然后是一个警报,它会正常工作,发出警报,然后一旦我单击确定,它就会搞砸并再次隐藏标题。
<script>
var hash = "#" + location.hash.replace(/[^A-Za-z0-9_\-]/g, "");
if (hash && $(hash).offset()) {
var pos = $(hash).offset().top - 55;
$(window).scrollTop(pos);
}
</script>
编辑:我在我的 law.html 页面上将脚本缩小到以下 3 行。
<script>
var shiftWindow = function() { scrollBy(0, -50) };
if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow);
</script>
这使得该功能只有在 law.html 页面上才能正常工作。从另一个页面单击导航中的锚点时,我仍然无法使其工作。