Jquery 使用 Offset.top 平滑滚动
Jquery Smooth Scroll Using Offset.top
我正在尝试创建从 topNav
到网页上各个部分的平滑滚动效果。在下面的代码中,我重新创建了我遇到的问题,这只是我似乎无法使滚动过程动画化。我的链接跳转到适当的部分,并且我一直 console.logged
以确保在 'click'
时抓取了适当的元素,但它仍然无法正常工作。
有人可以帮忙吗?最初我认为这可能与这样一个事实有关,即我没有给 navlinks
个单独的 ID,而是用 class 名称将它们分组。这可能是我问题的一部分吗?
$(document).ready(function() {
$('.slide').click(function() {
var link = $(this).attr('href');
$('html,body').animate({
scrollTop: $(link).offset().top}, 1000);
return false;
});
});
* {
padding: 0;
margin: 0;
}
nav {
width: 100%;
height: 120px;
}
div {
width: 100%;
height: 500px;
}
<nav>
<a href="#first" class="slide">Section 1</a>
<a href="#second" class="slide">Section 2</a>
<a href="#third" class="slide">Section 3</a>
<a href="#fourth" class="slide">Section 4</a>
</nav>
<div>
<a name="first">Section 1</a>
</div>
<div>
<a name="second">Section 2</a>
</div>
<div>
<a name="third">Section 3</a>
</div>
<div>
<a name="fourth">Section 4</a>
</div>
首先,您是否在项目中加载了JQuery?
如果是这样,你的 HTML 就犯了一个小错误。 Href 属性引用一个 ID,而不是一个名称属性!
我的解决方案:
$(document).ready(function() {
$('.slide').click(function() {
var link = $(this).attr('href');
$('html, body').animate({
scrollTop: $(link).offset().top}, 1000);
return false;
});
});
* {
padding: 0;
margin: 0;
}
nav {
width: 100%;
height: 120px;
}
div {
width: 100%;
height: 500px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav>
<a href="#first" class="slide">Section 1</a>
<a href="#second" class="slide">Section 2</a>
<a href="#third" class="slide">Section 3</a>
<a href="#fourth" class="slide">Section 4</a>
</nav>
<div id="first">
<a>Section 1</a>
</div>
<div id="second">
<a>Section 2</a>
</div>
<div id="third">
<a>Section 3</a>
</div>
<div id="four">
<a>Section 4</a>
</div>
我正在尝试创建从 topNav
到网页上各个部分的平滑滚动效果。在下面的代码中,我重新创建了我遇到的问题,这只是我似乎无法使滚动过程动画化。我的链接跳转到适当的部分,并且我一直 console.logged
以确保在 'click'
时抓取了适当的元素,但它仍然无法正常工作。
有人可以帮忙吗?最初我认为这可能与这样一个事实有关,即我没有给 navlinks
个单独的 ID,而是用 class 名称将它们分组。这可能是我问题的一部分吗?
$(document).ready(function() {
$('.slide').click(function() {
var link = $(this).attr('href');
$('html,body').animate({
scrollTop: $(link).offset().top}, 1000);
return false;
});
});
* {
padding: 0;
margin: 0;
}
nav {
width: 100%;
height: 120px;
}
div {
width: 100%;
height: 500px;
}
<nav>
<a href="#first" class="slide">Section 1</a>
<a href="#second" class="slide">Section 2</a>
<a href="#third" class="slide">Section 3</a>
<a href="#fourth" class="slide">Section 4</a>
</nav>
<div>
<a name="first">Section 1</a>
</div>
<div>
<a name="second">Section 2</a>
</div>
<div>
<a name="third">Section 3</a>
</div>
<div>
<a name="fourth">Section 4</a>
</div>
首先,您是否在项目中加载了JQuery?
如果是这样,你的 HTML 就犯了一个小错误。 Href 属性引用一个 ID,而不是一个名称属性!
我的解决方案:
$(document).ready(function() {
$('.slide').click(function() {
var link = $(this).attr('href');
$('html, body').animate({
scrollTop: $(link).offset().top}, 1000);
return false;
});
});
* {
padding: 0;
margin: 0;
}
nav {
width: 100%;
height: 120px;
}
div {
width: 100%;
height: 500px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav>
<a href="#first" class="slide">Section 1</a>
<a href="#second" class="slide">Section 2</a>
<a href="#third" class="slide">Section 3</a>
<a href="#fourth" class="slide">Section 4</a>
</nav>
<div id="first">
<a>Section 1</a>
</div>
<div id="second">
<a>Section 2</a>
</div>
<div id="third">
<a>Section 3</a>
</div>
<div id="four">
<a>Section 4</a>
</div>