Slider js по 4кнопкам
У меня есть Слайдер на Js там 4картинки и 2кнопки вправо влево и 4круглых кнопок. Задача заключается в том чтобы можно было менять картинки по круглым кнопкам. То есть активна 1картинка(1кнопка)Если нажать на 3кругулю кнопку, должна появится 3картинка. Думаю понятно обьяснил.
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>простой слайдер</title>
<link rel="stylesheet" href="./style.css">
</head>
<body>
<div class="container">
<h1></h1>
<div class="slider">
<div class="slider-line">
<img src="./images/elephant.png" alt="">
<img src="./images/gorilla.png" alt="">
<img src="./images/home.png" alt="">
<img src="./images/ice_cream.png" alt="">
</div>
</div>
<button class="slider-prev">Prev</button>
<button class="slider-next">Next</button>
<label for="radio1">1</label>
<label for="radio2">2</label>
<label for="radio3">3</label>
<label for="radio4">4</label>
<script src="script.js"></script>
</body>
</html>
CSS
* {
margin: 0;
/* box-sizing: border-box; */
}
html, body {
font-size: 18px;
font-family: sans-serif;
}
.container {
max-width: 1200px;
margin: 30px auto;
background: #f1f1f1;
padding: 30px;
}
h1 {
text-align: center;
margin-bottom: 40px;
}
button {
background: none;
border: 1px solid black;
border-radius: 4px;
padding: 10px 20px;
font-size: .9rem;
}
button:hover {
background: orangered;
}
button:active {
background: #000;
color: #fff;
}
.courses {
margin-top: 40px;
}
.courses li {
margin-bottom: 20px;
}
.courses a {
color: #222;
}
.slider {
border: 2px solid black;
width: 256px;
height: 256px;
margin: 20px auto;
}
.slider-line {
width: 1024px;
height: 256px;
display: flex;
background: orange;
position: relative;
left: 0;
transition: all ease 1s;
}
label{
border: 2px solid black;
padding: 5px;
border-radius: 10px;
margin-left: 10px;
}
JS
let offset = 0;
const sliderLine = document.querySelector('.slider-line');
document.querySelector('.slider-next').addEventListener('click', function(){
offset = offset + 256;
if (offset > 768) {
offset = 0;
}
sliderLine.style.left = -offset + 'px';
});
document.querySelector('.slider-prev').addEventListener('click', function () {
offset = offset - 256;
if (offset < 0) {
offset = 768;
}
sliderLine.style.left = -offset + 'px';
});
Ответы (1 шт):
я бы на вашем месте немного изменил логику кнопок: во-первых нужно задать счетчик слайдеров:
let currentSlider = 0;
и фукнкцию, которая меняет слайдер:
function toggleSlider (count) {
if (count < 0) {
currentSlider = 3
}
if (count > 3) {
currentSlider = 0
}
const offset = currentSlider * 256;
sliderLine.style.left = -offset + 'px';
});
Теперь при нажатии на кнопку вперед/назад достаточно вызвать данную функцию и передать в нее номер нового слайдера:
- на следующий слайдер toggleSlider(currentSlider++)
- на предыдущий toggleSlider(currentSlider--)
Теперь и проблема с пагинацией решена:
Получите список из 4 круглых кнопок, перебирайте их и навести на каждую функцию - toggleSlider, передав в нее в качестве аргумента - номер кнопки. Должно заработать