Страница jQuery переходит наверх перед выполнением анимации
Я пытаюсь сделать слайд-анимацию для своего веб-сайта. Основные функциональные возможности есть, но у меня есть проблема в том, что всякий раз, когда я нажимаю на один элемент (когда страница не сверху), страница переходит вверх и назад, а затем делает анимацию как задумано. Я исследовал последние дни, но мои проблемы кажутся уникальными, поэтому я решил задать этот вопрос. Вот что у меня есть:
<div class="content">
<div class="inner_content">
<div id="first" class="first"></div>
<div id="second" class="second"></div>
<div id="third" class="third"></div>
</div>
</div>
Идея состоит в том, чтобы щелкнуть один элемент div (первый, второй, третий) и прокрутить его вверх со смещением 130 пикселей сверху из-за панели навигации. Это мой jQuery:
<script>
$( "div.first").click(function(){
$("html, body").animate({
"scrollTop": $("div.first").offset().top -130
}, 500);
$( "div.second").click(function(){
$("html, body").animate({
"scrollTop": $("div.first").offset().top -130
}, 500);
$( "div.third").click(function(){
$("html, body").animate({
"scrollTop": $("div.first").offset().top -130
}, 500);
</script>
Проблема, как сказано. страница очень быстро переходит на верх страницы, а затем возвращается на предыдущую позицию. после этого анимация скольжения вверх или вниз очень чистая и плавная. Я действительно не знаю, где проблема. Я надеюсь, что кто-нибудь может мне помочь. Заранее спасибо.
1 ответ
Вы пропустили некоторые из заключительных скобок.
$(document).ready(function () {
$("div.first").click(function () {
$("html, body").animate({
"scrollTop": $("div.first").offset().top - 130
}, 500);
});
$("div.second").click(function () {
$("html, body").animate({
"scrollTop": $("div.first").offset().top - 130
}, 500);
});
$("div.third").click(function () {
$("html, body").animate({
"scrollTop": $("div.first").offset().top - 130
}, 500);
});
});
Кроме того, я заметил, что вы запускаете анимацию на div.click
, но если вы когда-нибудь сделаете это на anchor
это приятно использовать event.preventDefault();