У меня есть слайдер html и css, где я использую scroll-snap
для ручной прокрутки и кнопки jQuery для автоматической прокрутки. Однако при использовании scroll-snap-type: x mandatory;
анимация jQuery scrollLeft
становится чрезвычайно медленной или анимация исчезает. Откуда происходит это отставание? Есть ли решение только для jQuery?
Снятие css-snap-snap устраняет проблему, но стиль необходим ползунку.
HTML
<div class="container">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
<button id="left">←</button>
<button id="right">→</button>
CSS
.container {
max-width: 300px;
display: flex;
scroll-snap-type: x mandatory;
overflow-x: auto;
}
.box {
min-width: 100%;
min-height: 250px;
scroll-snap-align: center;
scroll-snap-stop: normal;
}
.box:nth-child(1) {background: #f55;}
.box:nth-child(2) {background: #5f5;}
.box:nth-child(3) {background: #5ff;}
JQuery
$("#right, #left").click(function() {
var dir = this.id=="right" ? '+=' : '-=' ;
$(".container").stop().animate({scrollLeft: dir+'300'}, 300);
});
Вот живой пример: https://codepen.io/tystrong/pen/rboLYz