Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.11.2013, 00:11
Профессор
Посмотреть профиль Найти все сообщения от imediasun1
 
Регистрация: 23.12.2012
Сообщений: 437

цикличный слайдер
Помогите пожалуйста на чистом js написать слайдер, суть его в том что при нажатии влево картинка уходит влево и появляется следующая, и соответственно, вправо, при всем при этом когда заканчиваются фотографии должен происходить цикл, то есть опять первая фотография должна сменять последнюю, большое спасибо всем отозвавшимся
<div id="left_arrow"></div>
<div id="right_arrow"></div>
<div id="slider">
     <img class="child_img" src="">
     <img class="child_img" src="">
     <img class="child_img" src="">
</div>

http://learn.javascript.ru/play/AbKn5
Я понимаю что строю велосипед есть много примеров на jquery, но я хочу ради урока создать самому с нуля, подскажите что делать надо

Последний раз редактировалось imediasun1, 19.11.2013 в 00:31.
Ответить с цитированием
  #2 (permalink)  
Старый 19.11.2013, 01:16
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

http://learn.javascript.ru/play/zfzaeb
извиняюсь за нецензурщину в ссылке, такой адрес выдали, я не виноват
Ответить с цитированием
  #3 (permalink)  
Старый 19.11.2013, 01:59
Профессор
Посмотреть профиль Найти все сообщения от imediasun1
 
Регистрация: 23.12.2012
Сообщений: 437

Спасибо большое очень благодпрен
можете прокомментировать чтобы легче было разобраться в логике?
<script>
var picsNum = document.getElementById('slider').getElementsByTagName('img').length;
      var now = 0;
      var sliderOffset = [];
      for (var i = 0; i < picsNum; i++) sliderOffset.push(-i * 104 + 'px');
      console.table(sliderOffset);
      document.getElementById('left_arrow').onclick = function() {
        --now;
        if(now < 0) now = picsNum - 1;
        document.getElementById('slider').style.left = sliderOffset[now];
      }
      document.getElementById('right_arrow').onclick = function() {
        ++now;
        if(now > picsNum - 1) now = 0;
        document.getElementById('slider').style.left = sliderOffset[now];
      }


    </script>

Последний раз редактировалось imediasun1, 19.11.2013 в 02:06.
Ответить с цитированием
  #4 (permalink)  
Старый 19.11.2013, 10:08
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

var picsNum = document.getElementById('slider').getElementsByTagName('img').length; // считаем сколько картинок заложено в слайдер
      var now = 0; // первой будет выведена картинка с индексом 0 (т.е. первая)
      var sliderOffset = []; 
      for (var i = 0; i < picsNum; i++) sliderOffset.push(-i * 104 + 'px'); // создаем массив с вариантами смещения слайдера для каждой картинки
      console.table(sliderOffset); // для отладки, это я забыл убрать. Выводит в консоль получившийся массив. Можете удалить строку
      document.getElementById('left_arrow').onclick = function() {
        --now;// уменьшаем индекс картинки
        if(now < 0) now = picsNum - 1; // если залезли в отрицательную область, делаем текущей последнюю картинку
        document.getElementById('slider').style.left = sliderOffset[now]; //смещаем слайдер в соответствии с текущей картинкой
      }
      document.getElementById('right_arrow').onclick = function() {
        ++now; // увеличиваем индекс картинки
        if(now > picsNum - 1) now = 0; // если индекс больше, чем может быть, делаем текущей первую картинку
        document.getElementById('slider').style.left = sliderOffset[now]; // см. выше
      }
Ответить с цитированием
  #5 (permalink)  
Старый 21.11.2013, 12:48
Профессор
Посмотреть профиль Найти все сообщения от imediasun1
 
Регистрация: 23.12.2012
Сообщений: 437

В продолжении темы о слайдерах, очень пригодится ваша логика в построении того слайдера который нужен. Есть замечательный css слайдер картинок,Существует задача чтобы вместе с картинками менялся и текст соответствующий картинкам. Сложность существует в том что в данном слайдере невозможно почему то выделить селекторы кнопок вправо влево, смотрите самиhttp://learn.javascript.ru/play/hMpwob
Дайте пожалуйста направление как сделать меняющимся и текст

Последний раз редактировалось imediasun1, 21.11.2013 в 12:52.
Ответить с цитированием
  #6 (permalink)  
Старый 21.11.2013, 17:06
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от imediasun1
невозможно почему то выделить селекторы кнопок вправо влево
Селекторы можно выделить всегда. Даже когда нет возможности правки верстки. Есть дочерние, соседские, родительские селекторы и т.д.
А в данном случае, если есть возможность поправить верстку, легко можно добавить нужным label id'шники и навешивать обработчики клика по ним.
Ответить с цитированием
  #7 (permalink)  
Старый 21.11.2013, 18:04
Профессор
Посмотреть профиль Найти все сообщения от imediasun1
 
Регистрация: 23.12.2012
Сообщений: 437

например, я не понимаю как это сделать там же leblов динамическое количество, продемонстрируйте пожалуйста
Ответить с цитированием
  #8 (permalink)  
Старый 21.11.2013, 22:03
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от imediasun1
там же leblов динамическое количество
где вы увидели динамическое количество? Я вижу количество фиксированное - по количеству картинок:
<div class="side-controls">
        <label for="slide1"></label>
        <label for="slide2"></label>
        <label for="slide3"></label>
        <label for="slide4"></label>
        <label for="slide5"></label>
        <label for="slide6"></label>
     </div>
Ответить с цитированием
  #9 (permalink)  
Старый 21.11.2013, 23:57
Профессор
Посмотреть профиль Найти все сообщения от imediasun1
 
Регистрация: 23.12.2012
Сообщений: 437

Извините не указал что собираюсь сделать слайдер динамическим, будет так
<div class="side-controls">
<?
foreach ($slider as $key=>$value){
?>
<label for="slide<?=$value['id']?>"></label>
<?
}
?>  
</div>

Последний раз редактировалось imediasun1, 22.11.2013 в 00:00.
Ответить с цитированием
  #10 (permalink)  
Старый 22.11.2013, 01:13
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от imediasun1
<label for="slide<?=$value['id']?>"></label>
<label id="lab<?=$value['id']?>" for="slide<?=$value['id']?>"></label>

ммм?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Связать ползунковый слайдер и аккордеон... All_ex74 Элементы интерфейса 1 31.05.2013 13:20
Слайдер во время загрузки страницы v.v.dankiv jQuery 0 14.04.2013 11:16
Слайдер с помощью CSS и jQuery - 1000 р. stixia007 jQuery 21 27.03.2013 22:44
Слайдер с перемоткой в двух разных блоках Джэй jQuery 0 15.10.2012 23:08
Нужно отредактировать слайдер glavkot Работа 0 22.08.2011 14:14