Сделал простой слайдер на js. Пока только учусь и многого не знаю, так что реализация оставляет желать лучшего) как лучше его доделать?
var btn1 = document.querySelector(".rad1");
var btn2 = document.querySelector(".rad2");
var btn3 = document.querySelector(".rad3");
var one = document.querySelector(".yellow");
var two = document.querySelector(".green");
var three = document.querySelector(".red");
btn1.addEventListener("click", function(event) {
one.classList.add("block-item-show");
two.classList.remove("block-item-show");
three.classList.remove("block-item-show");
})
btn2.addEventListener("click", function(event) {
two.classList.add("block-item-show");
one.classList.remove("block-item-show");
three.classList.remove("block-item-show");
})
btn3.addEventListener("click", function(event) {
three.classList.add("block-item-show");
one.classList.remove("block-item-show");
two.classList.remove("block-item-show");
})
html,
body {
margin: 0;
padding: 0;
}
.block {
position: relative;
width: 600px;
height: 300px;
margin: 0 auto;
background-color: skyblue;
border: 2px solid #eee;
}
.block-item {
display: none;
position: absolute;
top: 0;
left: 0;
width: 600px;
height: 300px;
}
.block-item-show {
display: block;
}
.yellow {
background-color: yellow;
}
.green {
background-color: green;
}
.red {
background-color: red;
}
.rad1,
.rad2,
.rad3 {
position: absolute;
left: 50%;
bottom: 10px;
z-index: 2;
margin-left: -50px;
}
.rad2 {
margin-left: -30px;
}
.rad3 {
margin-left: -10px;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="block">
<div class="block-item yellow"></div>
<div class="block-item green"></div>
<div class="block-item red"></div>
<input class="rad1" type="radio" name="group">
<input class="rad2" type="radio" name="group">
<input class="rad3" type="radio" name="group">
</div>
<script src="main.js"></script>
</body>
</html>
На сырую получилось как-то так:
var photos = document.querySelectorAll(".block-item");
var btns = document.querySelectorAll("input[type=radio]");
btns.forEach(function(item, idx) {
item.addEventListener('click', function() {
photos.forEach(function(el) {
el.classList.remove("block-item-show");
});
photos[idx].classList.add("block-item-show");
});
});
html,
body {
margin: 0;
padding: 0;
}
.block {
position: relative;
width: 600px;
height: 300px;
margin: 0 auto;
background-color: skyblue;
border: 2px solid #eee;
}
.block-item {
display: none;
position: absolute;
top: 0;
left: 0;
width: 600px;
height: 300px;
}
.block-item-show {
display: block;
}
.yellow {
background-color: yellow;
}
.green {
background-color: green;
}
.red {
background-color: red;
}
.rad1,
.rad2,
.rad3 {
position: absolute;
left: 50%;
bottom: 10px;
z-index: 2;
margin-left: -50px;
}
.rad2 {
margin-left: -30px;
}
.rad3 {
margin-left: -10px;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="block">
<div class="block-item yellow"></div>
<div class="block-item green"></div>
<div class="block-item red"></div>
<input class="rad1" type="radio" name="group">
<input class="rad2" type="radio" name="group">
<input class="rad3" type="radio" name="group">
</div>
<script src="main.js"></script>
</body>
</html>
Наверняка сделать можно еще лучше
Но вообще, такой "слайдер" можно сделать и без JS. Ибо это на слайдер совсем не похоже.
Визуально, минимум:
radio
и блок с фото надо обернуть в отдельные div
'ы, чтоб можно было позиционировать блокамиP.S. Как говорят в комментарии: IE как обычно впереди планеты всей, поэтому forEach
лучше заменить на for
или еще какой-либо цикл, который не умрет в одном из браузеров.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
При удалении кукисов, чистке кеша, а также смене IP сайт по-прежнему выводит последние запросыКак он хранит информацию на клиенте? Кажется,...
На сайте из <textarea> беру текст с переводами строкиВ postgresql он вставляется в одну строку
Есть рабочий код в jQuery, который, как мне кажется, можно оптимизировать за счет условий if и elseТем не менее, у меня не получилось это сделать,...
how to create a navigation like this? http://demoyosoftware