$("#nextCarousel").click(function(){
$(".main-container").animate({
scrollTop: $('.main-container').scrollTop() + 100
});
});
Здравствуйте, как избавиться от анимации?
Код должен скролить блок на 100 пикселей при каждом нажатии на кнопку.
Я бы наверное как-то так бы сделал:
function scroll() {
let fromTop = $(window).scrollTop();
let newScroll = fromTop + 100;
$(window).scrollTop(newScroll);
}
$("button").on("click", scroll)
.block {
height: 100px;
width: 100%;
border: solid;
}
.block+.block {
margin-top: 5px;
}
.btn {
position: fixed;
top: 20px;
left: 20px;
z-index: 1;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="main-container">
<div class="block">block</div>
<div class="block">block</div>
<div class="block">block</div>
<div class="block">block</div>
<div class="block">block</div>
<div class="block">block</div>
<div class="block">block</div>
<div class="block">block</div>
</div>
<button class="btn">click</button>
В вашем же случае можно просто для animate поставить duration: 0.
Типа такого:
function scroll() {
let fromTop = $(window).scrollTop();
let newScroll = fromTop + 100;
$("html, body").animate({
scrollTop: newScroll
}, 0);
}
$("button").on("click", scroll)
.block {
height: 100px;
width: 100%;
border: solid;
}
.block+.block {
margin-top: 5px;
}
.btn {
position: fixed;
top: 20px;
left: 20px;
z-index: 1;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="main-container">
<div class="block">block</div>
<div class="block">block</div>
<div class="block">block</div>
<div class="block">block</div>
<div class="block">block</div>
<div class="block">block</div>
<div class="block">block</div>
<div class="block">block</div>
</div>
<button class="btn">click</button>
Вот ваш код с duration 0:
$("#nextCarousel").click(function() {
$(".main-container").animate({
scrollTop: $('.main-container').scrollTop() + 100
}, 0);
});
Сборка персонального компьютера от Artline: умный выбор для современных пользователей