zayko
@zayko

Jquery, animate не применяется для скрытого слайдера?

Есть простой скрипт, организующий слайдер. Выглядит как-то так



function slider_init(name){<br>
  var animate_period = 300;<br>
  var id = '#' + name + ' ';<br>
  var slider_element_width = $(id + 'ul li:first').outerWidth(true);<br>
  $(id + '.prev').click(function(e){<br>
    e.preventDefault();<br>
    $(id + 'li:last-child').prependTo(id + 'ul');<br>
    $(id + 'ul').css('left', -slider_element_width + 'px');<br>
    $(id + 'ul').animate({ 'left': '0px' } , animate_period);<br>
  });<br>
  $(id + '.next').click(function(e){<br>
    e.preventDefault();<br>
    $(id + 'li:first-child').appendTo(id + 'ul');<br>
    $(id + 'ul').css('left', '0px');<br>
    $(id + 'ul').animate({ 'left': -slider_element_width + 'px'} , animate_period);<br>
  });<br>
}<br>




переставляет элементы списка — с конца в начало или с начала в конец и прокручивает css свойство left.



На странице 2 идентичных слайдера (2 вида отображения страницы). Один по умолчанию скрыт. При нажатии кнопки — блоки показываются/скрываются — и тогда мы можем увидеть 2 слайдер.



Дело в том, что анимация первого слайдера — работает нормально. У второго слайдера анимации нет — он просто мгновенно прощелкивает блоки.



Слайдеры идентичны — отличие только в id.



Есть предположение, что это из-за того, что родительский блок в котором находится слайдер — не отображается при загрузке страницы.



Пробовал переинициализировать слайдер — вызовом функции при нажатии кнопки отображения второго варианта страницы, но тогда слайдер вообще ведет себя коматозно и при анимации прокручивается судорожно подглючивает.



Что делать? В чем может быть причина?
  • Вопрос задан
  • 2742 просмотра
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
requestAnimationFrame — минут 5 вспоминал эту штуку…
Ответ написан
Возможна ошибка расчёта координат — надо смотреть весь код.
Какие у Вас блоки (с фиксированной не фиксированной шириной), какой контейнер блоков?
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы