как переходить между изображениями в слайдере - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть простой слайдер изображений с диапазоном ввода. Я хочу выбрать значение входного диапазона и иметь возможность постепенно увеличивать и уменьшать изображения.

Проблема в том, что мои настройки должны оставаться такими. Мне нужно иметь теги img в li и изображения в качестве фона CSS для имен классов.

Как определить текущую игру и перейти к следующей в зависимости от того, где находится слайдер?

Требование : Если пользователь переместится на диапазон 2 на слайдере, изображение 2 должно быть видимым. если пользователь переходит в диапазон 4, изображение 4 должно быть видимым и т. д.

Я смог прочитать диапазон ввода и найти изображение с этим классом изображения.

Как мне удалить "активное" состояние предыдущего и вставить это новое изображение?

Пожалуйста, найдите код

let line = document.getElementById("line");

line.addEventListener("input", function(event){
  setNewImage(event.target.value);
});

function setNewImage(value){
  let currentImage = document.getElementsByClassName("playing");
  let newImageClassName = "image"+value;
}
.container {
  display: flex;
  justify-content: center;
  flex-direction: column;
  background-color: lavendar;
  width: 400px;
  height: 300px;
}

.image-container {
  width: 380px;
  height: 280px;
/*   background-color: pink; */
}

.scrollbar {
/*   padding: 0 5px 5px 0; */
}
.scrollbar input {
  width: 380px;
}

ul li {
  list-style: none;
}

.image {
  width: 380px;
  height: 260px;
  display: none;
}

.playing {
  display: block;
}
.image1 {
  background: url('http://placekitten.com/380/260') no-repeat;
}

.image2 {
  background: url('http://placekitten.com/378/260') no-repeat;
}

.image3 {
  background: url('http://placekitten.com/380/259') no-repeat;
}

.image4 {
  background: url('http://placekitten.com/379/260') no-repeat;
}

.image5 {
  background: url('http://placekitten.com/383/260') no-repeat;
}

.image6 {
  background: url('http://placekitten.com/380/261') no-repeat;
}
<div class="container">
  <div class="image-container">
    <ul>
      <li><img class="playing image image1" /></li>
      <li><img class="image image2" /></li>
      <li ><img class="image image3" /></li>
      <li><img class="image image4" /></img></li>
      <li><img class="image image5" /></li>
      <li><img class="image image6"/></li>
    </ul>
  </div>
  <div class="scrollbar">
    <input id="line" type="range" min=1 max =6 />
  </div>
</div>

Я получаю значение диапазона ввода. Помощь здесь очень ценится! Спасибо!

1 Ответ

0 голосов
/ 27 апреля 2018

Мне удалось это решить!

  

let line = document.getElementById("line");

line.addEventListener("input", function(event){
  setNewImage(event.target.value);
});

function setNewImage(value){
  // console.log(value);
  let currentImage = document.getElementsByClassName("playing");
  let removedImage = currentImage[0].classList.remove("playing");
  let imageToAdd = "image"+value;
  // console.log(imageToAdd);
  
  let getElToAdd = document.getElementsByClassName(imageToAdd);
  
  // console.log(getElToAdd);
  
  let newEl = getElToAdd[0];
  
 newEl.classList.add("playing");
}
.container {
  display: flex;
  justify-content: center;
  flex-direction: column;
  background-color: lavendar;
  width: 400px;
  height: 300px;
}

.image-container {
  width: 380px;
  height: 280px;
/*   background-color: pink; */
}

.scrollbar {
/*   padding: 0 5px 5px 0; */
}
.scrollbar input {
  width: 380px;
}

ul li {
  list-style: none;
}

.image {
  width: 380px;
  height: 260px;
  display: none;
}

.playing {
  display: block;
}
.image1 {
  background: url('http://placekitten.com/380/260') no-repeat;
}

.image2 {
  background: url('http://placekitten.com/378/260') no-repeat;
}

.image3 {
  background: url('http://placekitten.com/380/259') no-repeat;
}

.image4 {
  background: url('http://placekitten.com/379/260') no-repeat;
}

.image5 {
  background: url('http://placekitten.com/383/260') no-repeat;
}

.image6 {
  background: url('http://placekitten.com/380/261') no-repeat;
}
<div class="container">
  <div class="image-container">
    <ul>
      <li><img class="playing image image1" /></li>
      <li><img class="image image2" /></li>
      <li ><img class="image image3" /></li>
      <li><img class="image image4" /></img></li>
      <li><img class="image image5" /></li>
      <li><img class="image image6"/></li>
    </ul>
  </div>
  <div class="scrollbar">
    <input id="line" type="range" min=1 max =6 />
  </div>
</div>
...