| 
	| 
	
	| 
		
	| 
			
			 
			
				03.10.2017, 11:20
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 21.02.2016 
						Сообщений: 271
					 
		
 |  |  
	| 
				Как сделать прокрутку индикаторов в карусели?
			 Здравствуйте! 
Делаю карусель на Bootstrap. Индикаторы выведены как миниатюры внизу в ряд... 
Стоит задача, что бы активный индикатор всегда был вторым по счету - т.е. при нажатии на индикатор, они прокручивались так что бы активный индикатор стал вторым (ну и соответственно индикаторы должны быть зациклены) . 
Есть ли решение?
 
<div id="carousel-custom" class="carousel slide" data-ride="carousel">
  <!-- Wrapper for slides -->
  <div class="carousel-inner" role="listbox">
                           <?php
                            $arg = array(
                                'post_status' => 'publish',
                                'post_type' => 'tabslider',
								'category-slide' => 'logos',
                                'posts_per_page' => -1
                            );
                            $slides = new WP_Query( $arg );
                            if ( $slides -> have_posts() ) :
                                $i = 0;
                                while ( $slides -> have_posts() ) : $slides -> the_post();
                                $task_1 = get_field('task_1');
								$task_2 = get_field('task_2');
								$task_3 = get_field('task_3');
								$zagolovok = get_the_title();
								$cont = get_the_content();
                                //print_r( $image_list );
                        ?>
						    <div class="item <? if ($i==0) { echo 'active'; } ?>">
  
	 <h3> <?php echo $zagolovok; ?> </h3>
	        <div class="col-sm-9 flright">
			<ul>
			<li><?php echo $task_1; ?></li>
			<li><?php echo $task_2; ?></li>
			<li><?php echo $task_3; ?></li>
			</ul>
	 <?php echo $cont; ?>
	        </div>
    </div>
						<?php $i = $i + 1; endwhile; wp_reset_postdata(); endif; ?>	
  </div>
  <!-- Controls -->
  <a class="left carousel-control" href="#carousel-custom" role="button" data-slide="prev">
    <i class="fa fa-chevron-left"></i>
    <span class="sr-only">Previous</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">Next</span>
  </a>
  
  
  <!-- Indicators -->
  <ol class="carousel-indicators visible-sm-block hidden-xs-block visible-md-block visible-lg-block">
                         <?php
                            $arg = array(
                                'post_status' => 'publish',
                                'post_type' => 'tabslider',
								'category-slide' => 'logos',
                                'posts_per_page' => -1
                            );
                            $slides = new WP_Query( $arg );
                            if ( $slides -> have_posts() ) :
                                $i = 0;
                                while ( $slides -> have_posts() ) : $slides -> the_post();
                                $image_list = get_field('tab_logo');
                                //print_r( $image_list );
                        ?>
<li data-target="#carousel-custom" data-slide-to="<? echo $i; ?>" class="<? if ($i==1) { echo 'active'; } ?>">
              <img src="<?php echo $image_list; ?>" alt="..." class="img-responsive">
            </li>						
<?php $i = $i + 1; endwhile; wp_reset_postdata(); endif; ?>						
          </ol> 
</div>
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				03.10.2017, 11:26
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| Igorsrt,
  
	
 
	| Цитата: |  
	| из милицейского жаргона. "Висяк" - это дело, не раскрывающееся в установленные сроки |  
	
 |  |  
	| 
		
	| 
			
			 
			
				03.10.2017, 12:12
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 21.02.2016 
						Сообщений: 271
					 
		
 |  |  
	| Т.е. никак?   
А какой-нибудь другой плагин может есть? А то мне этот "висяк" очень не хочется иметь... |  |  
	| 
		
	| 
			
			 
			
				03.10.2017, 12:29
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| Igorsrt,сама постановка вопроса, не позволяет дать вам ответа.  ваш вопрос из разряда Пойди туда - не знаю куда, принеси то - не знаю что
 |  |  
	| 
		
	| 
			
			 
			
				03.10.2017, 13:26
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 01.12.2016 
						Сообщений: 3,650
					 
		
 |  |  
	| У активного индикатора есть класс? (active обычно) |  |  
	| 
		
	| 
			
			 
			
				03.10.2017, 14:41
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 27.11.2015 
						Сообщений: 2,899
					 
		
 |  |  
	| j0hnik,Судя по тексту - есть.
 class="<? if ($i==1) { echo 'active'; } ?>"
 |  |  
	| 
		
	| 
			
			 
			
				03.10.2017, 14:50
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 27.11.2015 
						Сообщений: 2,899
					 
		
 |  |  
	| Насколько я понял, вот такой макет. 
И кликнутый элемент должен становиться активным и вставать на вторую позицию в списке.
 
<style>
   li { display:inline }
   .active { color:red }
</style>
<ol>
   <li>Первый</li>
   <li class='active'>Второй</li>
   <li>Третий</li>
   <li>Четвертый</li>
   <li>Пятый</li>
   <li>Шестой</li>
</ol>
<script>
  document.querySelector("ol").onclick = function(e){
    var lis = document.querySelectorAll('li');
    var selected = [].indexOf.call(this.children, (e ? e.target :event.srcElement) ) ; 
    if(selected != 1) {
       curr = selected ? selected - 1: lis.length - 1;
       var innerOl = "<li>" + lis[curr].innerText + "</li>\n<li class='active'>" + lis[selected].innerText + "</li>\n";
      curr++;
      for(var i = 2;i <lis.length;i++) { 
          curr++;
          if(curr >= lis.length) { if(selected==0) curr = 1;
            else curr =0;
          }
          innerOl += "<li>" + lis[curr].innerText + "</li>\n";
      }
      this.innerHTML = innerOl;     
   }
};
</script>
			 Последний раз редактировалось Dilettante_Pro, 03.10.2017 в 17:22.
 |  |  
	| 
		
	| 
			
			 
			
				04.10.2017, 09:14
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 21.02.2016 
						Сообщений: 271
					 
		
 |  |  
	| Да, именно так должно быть, спасибо... только что-то у меня пока не получается применить к моему коду 
<style>
   li { display:inline }
   .active { color:red }
</style>
<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="active">
              <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>
	<script>
  document.querySelector("ol").onclick = function(e){
    var lis = document.querySelectorAll('li');
    var selected = [].indexOf.call(this.children, (e ? e.target :event.srcElement) ) ; 
    if(selected != 1) {
       curr = selected ? selected - 1: lis.length - 1;
       var innerOl = "<li>" + lis[curr].innerText + "</li>\n<li class='active'>" + lis[selected].innerText + "</li>\n";
      curr++;
      for(var i = 2;i <lis.length;i++) { 
          curr++;
          if(curr >= lis.length) { if(selected==0) curr = 1;
            else curr =0;
          }
          innerOl += "<li>" + lis[curr].innerText + "</li>\n";
      }
      this.innerHTML = innerOl;     
   }
};
</script>
Ваш код работает, а мой нет... что не так?
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				04.10.2017, 09:33
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 21.02.2016 
						Сообщений: 271
					 
		
 |  |  
	| видимо, потому что у Вас текст, а у меня картинки - вот я тупой... Но как переделать, так и не пойму... И еще мне нужно, что бы одновременно отображались не все элементы - т.е. в списке их например 6, а на экране отображалось только 4 ближайших к активному |  |  
	| 
		
	| 
			
			 
			
				04.10.2017, 10:35
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| 
				делегирование , индекс элемента, бесконечная карусель
			 Dilettante_Pro  Igorsrt , 
без дополнительного класса active
 
<!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 src="https://cdn.polyfill.io/v1/polyfill.js?Element.prototype.closest"></script>
  <script>
 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>
</body>
</html>
 
			
			
	
			
			
			
			
			
				  |  |  |  |