Гладкая карусель: скольжение переменного количества элементов - PullRequest
0 голосов
/ 06 марта 2020

Я хочу использовать скользящий ползунок, чтобы скользить через переменное количество элементов. Причина в том, что я не знаю, сколько слайдов умещается в ширину экрана. Поэтому я не хочу устанавливать фиксированное количество элементов слайдера.

Вот что я сделал с обычным списком и переполнением прокрутки. Но мне нужна кнопка со стрелкой справа. Поэтому я бы использовал гладкую карусель. Или есть какое-нибудь лучшее решение?

Вот мой текущий код (рабочий пример): https://codepen.io/cray_code/pen/WNvXRXP

.slider-subcats-wrapper {
    width: 100%;
    height: 100px;
		padding: 20px 0;
    overflow-x: scroll;
    overflow-y: hidden;
    position: relative;
    white-space: nowrap;
    position: relative;
}

.slider-subcats-container {position: relative;}
.slider-subcats-container:after {
    content: "";
    position: absolute;
    height: 100px;
    width: 5rem;
    z-index: 10;
    right: -1px;
    top: 0;
    background: linear-gradient(to right,#fff0 0,#fff 78%,#fff 100%);
}

.slider-subcats {margin: 0; padding: 0; white-space: nowrap}

.slider-subcats li {
    display: inline-block;

    /* if you need ie7 support */
    *display: inline;
    zoom: 1
}


.slider-subcats-link {padding: 0.5rem 0.75rem; border: 1px solid #dee2e6; border-radius: 0.25rem; display: inline-block; font-size: 0.875rem; margin-right: 0.25rem; letter-spacing: 0.005rem;}
.slider-subcats li:last-child .slider-subcats-link {margin-right: 2.5rem;}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container">
	<div class="row">
		<div class="col-6 offset-3">
			<div class="slider-subcats-container">
				<div class="slider-subcats-wrapper">
					<ul class="slider-subcats">
						<li class="slider-subcats-item">
							<a class="slider-subcats-link" href="#">Item</a>
						</li>
						<li class="slider-subcats-item">
							<a class="slider-subcats-link" href="#">Longer Item</a>
						</li>
						<li class="slider-subcats-item">
							<a class="slider-subcats-link" href="#">Item with more space</a>
						</li>
						<li class="slider-subcats-item">
							<a class="slider-subcats-link" href="#">Item</a>
						</li>
						<li class="slider-subcats-item">
							<a class="slider-subcats-link" href="#">Medium</a>
						</li>
						<li class="slider-subcats-item">
							<a class="slider-subcats-link" href="#">2</a>
						</li>
						<li class="slider-subcats-item">
							<a class="slider-subcats-link" href="#">Item again</a>
						</li>
						<li class="slider-subcats-item">
							<a class="slider-subcats-link" href="#">Item with text</a>
						</li>
						<li class="slider-subcats-item">
							<a class="slider-subcats-link" href="#">Nav</a>
						</li>
					</ul>
				</div>
			</div>
		</div>
	</div>
</div>

1 Ответ

0 голосов
/ 06 марта 2020

Вам не нужно устанавливать точное количество изображений на слайде! Проверьте «Синхронизация слайдера» на веб-сайте Slick Slide.

$('.slider-nav').slick({
  slidesToShow: 3,
  slidesToScroll: 1,
  asNavFor: '.slider-for',
  dots: true,
  centerMode: true,
  focusOnSelect: true
});

slidesToShow указывает, сколько изображений будет на слайдах, а slidesToScroll указывает, сколько изображений пройдет, когда вы нажмете стрелку.

...