所以我是JavaScript / jQuery的新手,我一直在尝试将它一点一点地应用到我的网站(www.joeyorlando.me)。
我正在尝试解决的当前问题是,当用户点击页面顶部的其中一个链接时,我的网站会慢慢向下滚动页面到适当的部分(即,用户点击“背景”然后页面慢慢向下滚动到“背景”)。理想情况下,我甚至希望滚动功能稍微超过该部分的顶部(可能是50-100px),然后顺利地“反弹”回到该部分的顶部。
我的想法是存储来自点击链接的HREF值,然后使用此href值让页面向下滚动到该部分。我现在只关注第一部分,存储点击链接的HREF值,这是我到目前为止但它没有正常工作,控制台一直告诉我,当我尝试检查值时,未定义HREF单击其中一个链接后的HREF。
HTML代码
<nav>
<ul>
<li><a href="#about">About</a></li>
<li><a href="#background">Background</a></li>
<li><a href="#research">Research</a></li>
<li><a href="#travels">Travels</a></li>
<li><a href="#contact">Contact Me</a></li>
</ul>
</nav>
<body>
<div id="about"></div>
<div id="background"></div>
<div id="research"></div>
<div id="travels"></div>
<div id="contact"></div>
JavaScript代码
$('nav ul li a').click(function() {
window.location.href = $(this).attr('href');
var href = $(this).attr('href');
});
此外,布朗尼指向任何可以给我建议让页面慢慢向下滚动到正确位置的人。我尝试使用.scrollTo(),但它对我不起作用:(
先谢谢你们!
答案 0 :(得分:1)
为什么你还需要存储href?
使用此:
$(document).ready(function() {
$('ul li a').click(function() {
var id = $(this).attr('href');
$('html, body').animate({
scrollTop : $(id).offset().top
}, 500);
});
});
答案 1 :(得分:0)
这里略微修改了LorDex给你弹跳效果的答案:
$(document).ready(function() {
var body = $('html, body');
$('ul li a').click(function() {
var id = $(this).attr('href');
var elem = $(id);
var direction = elem.offset().top > $(document).scrollTop() ? 1 : -1;
body.animate({
scrollTop : elem.offset().top + (50 * direction)
}, 500).promise().then(function() {
body.animate({
scrollTop: elem.offset().top
}, 500)
});
});
});
首先计算它是否向上或向下滚动,它会向任一方向反弹。