Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.11.2017, 12:32
Профессор
Отправить личное сообщение для Igorsrt Посмотреть профиль Найти все сообщения от Igorsrt
 
Регистрация: 21.02.2016
Сообщений: 271

Прокрутка индикаторов в карусели 2
Здравствуйте! Несколько недель назад мне очень помогли на этом форуме. Стояла задача, сделать карусель на Bootstrap с индикаторами в виде миниатюр, и что бы активный индикатор всегда был вторым по счету - т.е. при нажатии на индикатор, они прокручивались так что бы активный индикатор стал вторым (ну и соответственно индикаторы должны быть зациклены). Вот итоговый рабочий код индикаторов:
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
<style>
   li { display:inline }
   li:nth-child(2)  img{
       border: 2px solid #FF0033;
   }
   li:nth-child(4) ~ li{
        display: none;
   }

  <script type="text/javascript">
 window.addEventListener("DOMContentLoaded", function() {
    var carousel = document.querySelector(".carousel-indicators");
    carousel.addEventListener("click", function(event) {
        var target = event.target;
        if (target = target.closest("li")) {
            var li = carousel.querySelectorAll("li");
            var selected = [].indexOf.call(li, target);
            selected = selected ? --selected : li.length - 1;
            [].forEach.call(li, function(el, i) {
                if (i < selected) carousel.appendChild(el)
            })
        }
    })
});
  </script>

</head>

<body>
<ol class="carousel-indicators visible-sm-block hidden-xs-block visible-md-block visible-lg-block">
                         <li data-target="#carousel-custom" data-slide-to="0" class="">
              <img src="http://ingraf.su/wp-content/uploads/adecco.jpg" alt="Adecco" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="1" class="">
              <img src="http://ingraf.su/wp-content/uploads/Rambler.jpg" alt="Rambler" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="2" class="">
              <img src="http://ingraf.su/wp-content/uploads/bel.jpg" alt="Белая птица" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="3" class="">
              <img src="http://ingraf.su/wp-content/uploads/Rusbiteh.jpg" alt="Русбитех" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="4" class="">
              <img src="http://ingraf.su/wp-content/uploads/Tryohgornaya-manufaktura.jpg" alt="Трёхгорная мануфактура" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="5" class="">
              <img src="http://ingraf.su/wp-content/uploads/Moskabelmet.jpg" alt="Москабельмет" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="6" class="">
              <img src="http://ingraf.su/wp-content/uploads/Asteros.jpg" alt="Астерос" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="7" class="">
              <img src="http://ingraf.su/wp-content/uploads/Subaru.jpg" alt="Subaru" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="8" class="">
              <img src="http://ingraf.su/wp-content/uploads/Nestle.jpg" alt="Nestle Waters" class="img-responsive">
            </li>
          </ol>

<!-- а здесь я хочу добавить стрелочки -->		  
  <a class="left carousel-control" href="#carousel-custom" role="button" data-slide="prev">Назад
    <i class="fa fa-chevron-left"></i>
    <span class="sr-only"></span>
  </a>
  <a class="right carousel-control" href="#carousel-custom" role="button" data-slide="next">Вперед
    <i class="fa fa-chevron-right"></i>
    <span class="sr-only"></span>
  </a>
</body>
</html>

Сейчас я бы хотел добавить еще стрелочки ("вперед" и "назад") в эти индикаторы, т.е. что бы можно было активировать картинку не только непосредственным нажатием на нее, но и прокруткой стрелочками.
Прошу помощи.
Ответить с цитированием
  #2 (permalink)  
Старый 04.11.2017, 13:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Igorsrt,
вариант не для ie

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
<style>
   li { display:inline }
   li:nth-child(2)  img{
       border: 2px solid #FF0033;
   }
   li:nth-child(4) ~ li{
        display: none;
   }
</style>
  <script type="text/javascript">

 window.addEventListener("DOMContentLoaded", function() {
    var carousel = document.querySelector(".carousel-indicators");

    carousel.addEventListener("click", function(event) {
        var target = event.target;
        if (target = target.closest("li")) {
            var li = carousel.querySelectorAll("li");
            var selected = [].indexOf.call(li, target);
            selected = selected ? --selected : li.length - 1;
            [].forEach.call(li, function(el, i) {
                if (i < selected) carousel.appendChild(el)
            })
        }
    })
    document.querySelector(".left").addEventListener("click", function(event) {
    event.preventDefault();
    var li = carousel.querySelectorAll("li")[2];
    var event = new Event("click", {bubbles: true, cancelable: true});
    li.dispatchEvent(event) ;
     })
    document.querySelector(".right").addEventListener("click", function(event) {
    event.preventDefault();
    var li = carousel.querySelectorAll("li")[0];
    var event = new Event("click", {bubbles: true, cancelable: true});
    li.dispatchEvent(event) ;
     })

});
  </script>

</head>

<body>
<ol class="carousel-indicators visible-sm-block hidden-xs-block visible-md-block visible-lg-block">
                         <li data-target="#carousel-custom" data-slide-to="0" class="">
              <img src="http://ingraf.su/wp-content/uploads/adecco.jpg" alt="Adecco" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="1" class="">
              <img src="http://ingraf.su/wp-content/uploads/Rambler.jpg" alt="Rambler" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="2" class="">
              <img src="http://ingraf.su/wp-content/uploads/bel.jpg" alt="Белая птица" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="3" class="">
              <img src="http://ingraf.su/wp-content/uploads/Rusbiteh.jpg" alt="Русбитех" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="4" class="">
              <img src="http://ingraf.su/wp-content/uploads/Tryohgornaya-manufaktura.jpg" alt="Трёхгорная мануфактура" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="5" class="">
              <img src="http://ingraf.su/wp-content/uploads/Moskabelmet.jpg" alt="Москабельмет" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="6" class="">
              <img src="http://ingraf.su/wp-content/uploads/Asteros.jpg" alt="Астерос" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="7" class="">
              <img src="http://ingraf.su/wp-content/uploads/Subaru.jpg" alt="Subaru" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="8" class="">
              <img src="http://ingraf.su/wp-content/uploads/Nestle.jpg" alt="Nestle Waters" class="img-responsive">
            </li>
          </ol>

<!-- а здесь я хочу добавить стрелочки -->
  <a class="left carousel-control" href="#carousel-custom" role="button" data-slide="prev">Назад
    <i class="fa fa-chevron-left"></i>
    <span class="sr-only"></span>
  </a>
  <a class="right carousel-control" href="#carousel-custom" role="button" data-slide="next">Вперед
    <i class="fa fa-chevron-right"></i>
    <span class="sr-only"></span>
  </a>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 04.11.2017, 13:45
Профессор
Отправить личное сообщение для Igorsrt Посмотреть профиль Найти все сообщения от Igorsrt
 
Регистрация: 21.02.2016
Сообщений: 271

Огромное спасибо )
Ответить с цитированием
  #4 (permalink)  
Старый 04.11.2017, 13:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

делегирование стрелок влево вправо
Igorsrt,
вариант с общим блоком для карусели и кнопок
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
<style>
   li { display:inline }
   li:nth-child(2)  img{
       border: 2px solid #FF0033;
   }
   li:nth-child(4) ~ li{
        display: none;
   }
</style>
  <script type="text/javascript">

 window.addEventListener("DOMContentLoaded", function() {
    var block = document.querySelector(".carousel-block"),
    carousel = document.querySelector(".carousel-indicators");
    block.addEventListener("click", function(event) {
        var target = event.target, li = carousel.querySelectorAll("li"), selected, elem;
        if (elem = target.closest("li")) {
            selected = [].indexOf.call(li, elem);
        }
        else if (elem = target.closest(".left")) {
        event.preventDefault();selected = 0;
        }
        else if (elem = target.closest(".right")) {
        event.preventDefault();selected = 2;
        };
        if (selected !== void(0)) {
           selected = selected ? --selected : li.length - 1;
            [].forEach.call(li, function(el, i) {
                if (i < selected) carousel.appendChild(el)
            })
        }
    })

});
  </script>

</head>

<body>
<div class="carousel-block">
<ol class="carousel-indicators visible-sm-block hidden-xs-block visible-md-block visible-lg-block">
                         <li data-target="#carousel-custom" data-slide-to="0" class="">
              <img src="http://ingraf.su/wp-content/uploads/adecco.jpg" alt="Adecco" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="1" class="">
              <img src="http://ingraf.su/wp-content/uploads/Rambler.jpg" alt="Rambler" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="2" class="">
              <img src="http://ingraf.su/wp-content/uploads/bel.jpg" alt="Белая птица" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="3" class="">
              <img src="http://ingraf.su/wp-content/uploads/Rusbiteh.jpg" alt="Русбитех" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="4" class="">
              <img src="http://ingraf.su/wp-content/uploads/Tryohgornaya-manufaktura.jpg" alt="Трёхгорная мануфактура" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="5" class="">
              <img src="http://ingraf.su/wp-content/uploads/Moskabelmet.jpg" alt="Москабельмет" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="6" class="">
              <img src="http://ingraf.su/wp-content/uploads/Asteros.jpg" alt="Астерос" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="7" class="">
              <img src="http://ingraf.su/wp-content/uploads/Subaru.jpg" alt="Subaru" class="img-responsive">
            </li>
<li data-target="#carousel-custom" data-slide-to="8" class="">
              <img src="http://ingraf.su/wp-content/uploads/Nestle.jpg" alt="Nestle Waters" class="img-responsive">
            </li>
          </ol>

<!-- а здесь я хочу добавить стрелочки -->
  <a class="left carousel-control" href="#carousel-custom" role="button" data-slide="prev">Назад
    <i class="fa fa-chevron-left"></i>
    <span class="sr-only"></span>
  </a>
  <a class="right carousel-control" href="#carousel-custom" role="button" data-slide="next">Вперед
    <i class="fa fa-chevron-right"></i>
    <span class="sr-only"></span>
  </a>
</div>

</body>
</html>

Последний раз редактировалось рони, 04.11.2017 в 13:55.
Ответить с цитированием
  #5 (permalink)  
Старый 04.11.2017, 14:12
Профессор
Отправить личное сообщение для Igorsrt Посмотреть профиль Найти все сообщения от Igorsrt
 
Регистрация: 21.02.2016
Сообщений: 271

только кажется чуть-чуть не правильно... т.е. сам по себе код работает (вперед/назад перепутано - но это я и сам допер как поправить), а вот на сайте вместе с Bootstrap правильно работает только стрелочка "Назад"... (

Последний раз редактировалось Igorsrt, 04.11.2017 в 14:37.
Ответить с цитированием
  #6 (permalink)  
Старый 04.11.2017, 14:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Igorsrt
только стрелочка "Назад"...
потому что две кнопки .right - замените на что-то более уникальное
Ответить с цитированием
  #7 (permalink)  
Старый 04.11.2017, 14:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Igorsrt,


document.querySelector(".carousel-control.right").addEventListener("click",
Ответить с цитированием
  #8 (permalink)  
Старый 04.11.2017, 14:31
Профессор
Отправить личное сообщение для Igorsrt Посмотреть профиль Найти все сообщения от Igorsrt
 
Регистрация: 21.02.2016
Сообщений: 271

да, Вы правы... еще раз спасибо )
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать прокрутку индикаторов в карусели? Igorsrt Элементы интерфейса 13 04.10.2017 16:36
Slider прокрутка карусели Фридрих Общие вопросы Javascript 1 11.03.2017 00:33
Отображение скрытого блока из карусели Kasper28 Элементы интерфейса 6 11.02.2014 16:40
Автоматическая прокрутка JQ карусели supermike Events/DOM/Window 0 13.09.2013 10:54
Некорректная прокрутка карусели. плагин к jq zlodiak jQuery 1 09.07.2013 14:32