Я пытаюсь сделать карусель, но у меня возникают проблемы.
Сначала, когда вы продолжаете нажимать кнопку Next
, функция продолжает работать там, где она должна быть остановлена, если последний элемент достиг. Я понятия не имею, как я могу сказать, чтобы функция перестала работать. Мне удалось сделать это с помощью кнопки prev
.
Во-вторых, мне нужно, чтобы она была гибкой, потому что я не знаю ни ширины, ни количества предметов. Например, если есть только два элемента, кнопка Next
и Prev
больше не нужна, я хочу, чтобы она скрывалась или что-то вроде того, если элементы больше не помещаются в контейнер, тогда отображается Next
или * 1010. * кнопка.
$(document).ready(function() {
var margin_left = 0;
$('#prev').on('click', function(e) {
e.preventDefault();
if (margin_left != 0) {
margin_left = margin_left + 190;
$('ul#csx-chips-menu-slider').animate({
'margin-left': margin_left
}, 300);
}
});
$('#next').on('click', function(e) {
e.preventDefault();
margin_left = margin_left - 190;
$('ul#csx-chips-menu-slider').animate({
'margin-left': margin_left
}, 300);
});
});
* {
box-sizing: border-box;
}
.chips-slider-container {
border: solid 1px;
width: 100%;
padding: 2px;
}
.chips-slider-parent {
width: 100%;
display: flex;
border: solid 1px;
}
.chips-slider-parent .csx-chips-items {
background-color: #CCCCCC;
padding: 5px;
}
.chips-slider-parent .csx-chips-items:nth-child(2) {
background-color: #DDDDDD;
flex: 1;
display: block;
overflow-x: hidden;
}
.csx-chips-menu {
padding: 0;
margin: 0;
list-style: none;
white-space: nowrap;
}
.csx-chips-menu li {
display: inline-block;
padding-left: 10px;
padding-right: 10px;
border: solid 1px;
}
.csx-chips-sub-menu {
display: none;
position: absolute;
background-color: #FFFFFF;
padding: 0;
margin: 0;
margin-left: -11px;
list-style: none;
}
.csx-chips-sub-menu li {
display: block;
}
.csx-chips-menu li:hover>.csx-chips-sub-menu {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="chips-slider-container">
<div class="chips-slider-parent">
<div class="csx-chips-items">
<a href="#" id="prev">PREV</a>
</div>
<div class="csx-chips-items">
<ul class="csx-chips-menu" id="csx-chips-menu-slider">
<li>
<a href="#">Sample Menu 1</a>
<ul class="csx-chips-sub-menu">
<li><a href="#">Sample Sub Menu</a></li>
<li><a href="#">Sample Sub Menu</a></li>
<li><a href="#">Sample Sub Menu</a></li>
<li><a href="#">Sample Sub Menu</a></li>
</ul>
</li>
<li><a href="#">Sample Menu 2</a></li>
<li><a href="#">Sample Menu 3</a></li>
<li><a href="#">Sample Menu 4</a></li>
<li><a href="#">Sample Menu 5</a></li>
<li><a href="#">Sample Menu 6</a></li>
<li><a href="#">Sample Menu 7</a></li>
<li><a href="#">Sample Menu 8</a></li>
<li><a href="#">Sample Menu 9</a></li>
<li><a href="#">Sample Menu 10</a></li>
<li><a href="#">Sample Menu 11</a></li>
</ul>
</div>
<div class="csx-chips-items">
<a href="#" id="next">NEXT</a>
</div>
</div>
</div>