Muranx
@Muranx
кто понял this тот в цирке не смеётся

Как описать функцию смены картинки слайдера в данном случае?

Нужна помощь в том, как описать функцию стрелочек "вправо" и "влево" на слайдере! Есть картинки, при клике на которые запускается непосредственно слайдер, на слайдере есть две стрелочки (стили добавлять не стал, просто два чёрных квадратика)! Вот непосредственно с ними и загвоздка:
HTML :
<div class="mini-img-wrap">
  
  <div class="mini-img">
       <img src="https://www.stihi.ru/pics/2013/03/21/3655.jpg"           id="img" class="img" alt="">
  </div>
  
  <div class="mini-img">
       <img src="https://www.stihi.ru/pics/2005/12/19-543.jpg"           id="img" class="img" alt="">
  </div>
  
  <div class="mini-img">
       <img src="https://static.baza.farpost.ru/v/1536487862393_bulletin"           id="img" class="img" alt="">
  </div>
  
</div>

<div class="big-img-wrap" id="mstrbig">
  <div class="close" id="close">close</div>
  
  <div class="big-img">
    
    <div class="arrowRight" id="arrowRight"></div> 
    <div class="arrowLeft" id="arrowLeft"></div>
    
    <img class="big-img" id="bigImg" src="#" alt="">
  </div>
</div>


CSS :

.mini-img-wrap{
  width: 300px;
  height: 200px;
  margin: 100px auto;
}

.mini-img{
  width: 30%;
  height: 100%;
  float: left;
  margin-right: 10px;
}

.img{
  width: 100%;
  height: 100%;
  transition: all 0.5s;
}

.big-img-wrap{
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: gray;
  display: none;
}

.close{
  position: absolute;
  right: 0px;
  width: 50px;
  height: 50px;
  background: red;
  text-align: center;
  line-height: 50px;
  cursor: pointer;
}

.big-img{
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 300px;
  height: 400px;
  background: black;
}

.arrowRight{
  position: absolute;
  width: 30px;
  height: 30px;
  background: black;
  top: 50%;
  right: 10px;
  z-index: 99;
  transform: translate(0,-50%);
  display: block;
}

.arrowLeft{
  position: absolute;
  width: 30px;
  height: 30px;
  background: black;
  top: 50%;
  left: 10px;
  z-index: 99;
  transform: translate(0,-50%);
  display: block;
}

JavaScript :
miniImg        = document.getElementsByClassName("img"); 
close          = document.getElementById("close"); 
bigSlideWrap   = document.getElementById("mstrbig");
bigImg         = document.getElementById("bigImg");
aL             = document.getElementById("arrowLeft");
aR             = document.getElementById("arrowRight");

for(var i=0; i<miniImg.length; i++){
    miniImg[i].onclick=function(e){
    bigSlideWrap.style.display="block"
    bigImg.src=e.target.src
  }
};

aL.onclick=function(){
  alert("Arrow left") //в этих фукнциях и есть вопрос
}

aR.onclick=function(){
  alert("Arrow right") //в этих фукнциях и есть вопрос
}

close.onclick=function(){
  bigSlideWrap.style.display="none"
};
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
hzzzzl
@hzzzzl
сохраняешь в массиве src всех картинок
images = ['a','b','c','d']
// "https://www.stihi.ru/pics/2005/12/19-543.jpg"  , и так далее

и сохраняешь индекс текущего слайда
current = 0
// начинаем с первого, то есть "нулевого" элемента в массиве


и тогда

aL.onclick=function(){
  alert("Arrow left") //в этих фукнциях и есть вопрос
  current = current - 1 < 0 ? images.length - 1 : current - 1
  // меняем индекс текущего и перерисовываем в слайдере картинку на images[current]
}

aR.onclick=function(){
  alert("Arrow right") //в этих фукнциях и есть вопрос
  current = current + 1 > images.length - 1 ? 0 : current +1
  // меняем индекс текущего и перерисовываем в слайдере картинку на images[current]
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы