Создание кругового слайдера на чистом JavaScript можно реализовать с помощью простого подхода, используя HTML, CSS и JavaScript. Я опишу базовую реализацию.
### HTML:
```html
<div class="slider">
<div class="slides">
<div class="slide">Слайд 1</div>
<div class="slide">Слайд 2</div>
<div class="slide">Слайд 3</div>
<div class="slide">Слайд 4</div>
</div>
<button class="prev">Назад</button>
<button class="next">Вперед</button>
</div>
```
### CSS:
```css
.slider {
position: relative;
overflow: hidden;
width: 300px; /* Ширина слайдера */
height: 200px; /* Высота слайдера */
}
.slides {
display: flex;
transition: transform 0.5s ease; /* Плавный переход */
}
.slide {
min-width: 100%; /* Ширина каждого слайда */
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
background: #ccc;
font-size: 24px;
}
```
### JavaScript:
```javascript
const slides = document.querySelector('.slides');
const slide = document.querySelectorAll('.slide');
const prevBtn = document.querySelector('.prev');
const nextBtn = document.querySelector('.next');
let index = 0;
function showSlide(n) {
if (n >= slide.length) {
index = 0; // Возврат на первый слайд
} else if (n < 0) {
index = slide.length - 1; // Переход на последний слайд
} else {
index = n; // Нормальное изменение
}
slides.style.transform = 'translateX(' + (-index * 100) + '%)';
}
nextBtn.addEventListener('click', () => {
showSlide(index + 1);
});
prevBtn.addEventListener('click', () => {
showSlide(index - 1);
});
// Показать первый слайд при загрузке
showSlide(index);
```
### Объяснение:
1. **HTML**: Мы создаем контейнер для слайдов и два кнопки для навигации.
2. **CSS**: Устанавливаем стиль для слайдов и контейнера. Мы используем `flex` для расположения слайдов в одну линию и `overflow: hidden`, чтобы скрыть ненужные слайды.
3. **JavaScript**:
- Получаем элементы `.slides`, `.slide`, кнопки и инициализируем переменную `index` для отслеживания текущего слайда.
- Функция `showSlide(n)` обновляет `index` и применяет `transform`, чтобы слайды плавно переходили.
- Добавляем обработчики событий на кнопки, чтобы при нажатии переключать слайды.
Эта реализация создает круговой слайдер, который позволяет плавно перемещаться между слайдами. При достижении конца слайдов они плавно возвращаются к началу. Таким образом, в случае нажатия кнопки "Вперед" на последнем слайде, слайдер плавно возвращается к первому слайду и наоборот.