我正在建立一个可以在这里查看的网站:argit.bounde.co.uk
我已经完成了大部分内容,现在我正在尝试进行导航。我有三个导航栏(只有一个是可见的)并且无论显示哪个都需要这种方法。如果您调整浏览器的大小以使窗口变窄将显示第二个,然后当您滚动时出现的导航是第三个。
我已经让它以一种时尚的方式工作,但问题是当我单击一个链接时,它会立即跳转到它想要去的地方,然后返回,然后按预期滚动。这是因为我在导航中留下了“href="#target"。我尝试过包含“return false”,但是如果浏览器不支持 JS,那么导航根本不起作用。
下一个问题是我想要一种使目标“结束”的方法。当前,当您单击链接时,它会滚动到选定的链接,并且导航会在通过它们时更新哪个链接“结束”。当用户向上和向下滚动页面时,我想要这个,但是如果他们单击一个链接,我希望该链接“结束”(以及来自其他导航的相应链接)并且不受通常会滚动检查的影响覆盖它。
我用于 onClick 导航的解决方案如下,我知道有插件可以做这种事情,但我想自己写,这样我可以更好地理解 jQuery。我不确定我目前使用的解决方案是否是一个好的解决方案,如果不是,请告诉我:
function navigation() {
$('html, body').stop().animate({
scrollTop: $($(this).attr('href')).offset().top
}, 1500);
}
我用于滚动检查的解决方案是我偶然发现的,它在下面,它通过覆盖它上面的方程来工作,实际上非常简单。还有一个动作可以在滚动时修复导航。
function navCheck() {
var documentHeight = $(document).height();
var windowHeight = $(window).height();
var windowTop = $(window).scrollTop() + 100;
var navTop = $("#scrollanchor").offset().top;
var mobileTop = $("#mobileanchor").offset().top;
var mobileHeight = $("#mobileanchor").height();
var overviewTop = $("#slider").offset().top;
var bioTop = $("#bio").offset().top;
var solutionsTop = $("#solutions").offset().top;
var experianceTop = $("#experiance").offset().top;
var contactTop = $("#contact").offset().top;
if($(window).scrollTop() > navTop) {
$("#leftfixer").addClass("leftfix");
} else {
$("#leftfixer").removeClass("leftfix");
}
if($(window).width() < 1200){
if(windowTop - 90 > mobileTop + mobileHeight) {
$("#mobilefix").slideDown();
} else {
if(windowTop - 96 <= mobileTop) {
$("#mobilefix").hide();
}
}
} else {
$("#mobilefix").slideUp();
}
$("li").removeClass("over");
$("li.navoverview").addClass("over");
if(windowTop > bioTop) {
$("li").removeClass("over");
$("li.navbio").addClass("over");
}
if(windowTop > solutionsTop) {
$("li").removeClass("over");
$("li.navsolutions").addClass("over");
}
if(windowTop > experianceTop) {
$("li").removeClass("over");
$("li.navexperiance").addClass("over");
}
if(windowTop > contactTop || windowTop > documentHeight - windowHeight) {
$("li").removeClass("over");
$("li.navcontact").addClass("over");
}
}
这是我在这里的第一篇文章,所以如果我错过了任何信息,我很抱歉!我也寻找过类似的帖子,但似乎大多数人在做这种事情时都会选择插件。谢谢
更新:页面跳转到锚点已修复