Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.08.2014, 23:56
Аватар для hfts_rider
Профессор
Отправить личное сообщение для hfts_rider Посмотреть профиль Найти все сообщения от hfts_rider
 
Регистрация: 26.01.2014
Сообщений: 181

Анимация в несколько этапов
Как правильно делать анимацию в несколько этапов?

Допустим я хочу что бы блок вначале поехал влево, потом вправо, потом вниз.

Как лучше всего это реализовать?

Правильно ли делать очередность анимаций вкладывая их в колбэки анимации?
$('.block').animate({'left':'100px'},400,function(){
$('.block').animate({'top':'200px'},400,function(){
и так далее...
});
});


Или все же лучше через переменную и интервал, и при завершении что бы очищала интервал и запускала другую функцию с интервалом?

И еще вопрос... Допустим я хочу что бы эта функция сработала только тогда когда пользователь прокрутил скролл ниже на 1000px.

Просто если написать if (scrollTop >= 1000){}, тогда оно будет ее все время повторять при прокрутке скрола дальше, а мне нужно что бы как только 1000 и больше, играет анимация 1 раз в не зависимости крутит скролл дальше пользователь или нет.

Пробовал так.
var animStart = 0;
$(window).on('scroll',function(){
  if(scrollTop >= 1000){
    animStart = 1;
  }
  
  if(animStart == 1){
    анимация..  
  }

});


Правильно ли это? или как лучше? (вроде бы в хроме норм отработала анимация, а в ИЕ непонятно что получилось))
Помогите пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 17.08.2014, 05:44
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

колбэки анимации правильный и понятный способ для последовательной анимации
Ответить с цитированием
  #3 (permalink)  
Старый 17.08.2014, 07:36
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Можно просто писать подряд.
<!DOCTYPE HTML>
<html>
  <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
  </head>
  
  <body>
    <div style="height: 100px; width: 100px; background-color: blue; position: absolute;"></div>
    <script>
      $("div").animate({'left':'100px'},400).animate({'top':'50px'},400);
    </script>
  </body>
</html>

jQuery сам отложит.

Последний раз редактировалось Erolast, 17.08.2014 в 08:51.
Ответить с цитированием
  #4 (permalink)  
Старый 17.08.2014, 10:34
Аватар для hfts_rider
Профессор
Отправить личное сообщение для hfts_rider Посмотреть профиль Найти все сообщения от hfts_rider
 
Регистрация: 26.01.2014
Сообщений: 181

Хорошо. Но что делать с scrollTop? Как сделать так что бы после того как пользователь прокрутил на 1000 пикселей, запустилась анимация один раз в не зависимости от того, крутит пользователь дальше или нет, так как я понял что если ставить на событие скролл, оно будет все время запускать ее снова и снова?
Ответить с цитированием
  #5 (permalink)  
Старый 17.08.2014, 15:04
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

<!DOCTYPE HTML>
<html>
  <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
  </head>
   
  <body>
    <div style="height: 100px; width: 100px; background-color: blue; position: absolute;"></div>
    <script>
      var animate_div = true;

      $(window).scroll(function() {
        if (window.animate_div && $(window).scrollTop() >= 10)
        {
          $("div").animate({'left':'100px'},400).animate({'top':'50px'},400);
          window.animate_div = false;
        }
      });
    </script>
    <br />
    <br />
    <br />
    <br />
    <br />
    <br />
    <br />
    <br />
  </body>
</html>
Ответить с цитированием
  #6 (permalink)  
Старый 17.08.2014, 15:16
Аватар для hfts_rider
Профессор
Отправить личное сообщение для hfts_rider Посмотреть профиль Найти все сообщения от hfts_rider
 
Регистрация: 26.01.2014
Сообщений: 181

ааа.. сбрасывать значение.. точно.. Спасибо!
Ответить с цитированием
  #7 (permalink)  
Старый 17.08.2014, 23:53
Аватар для hfts_rider
Профессор
Отправить личное сообщение для hfts_rider Посмотреть профиль Найти все сообщения от hfts_rider
 
Регистрация: 26.01.2014
Сообщений: 181

Еще вопрос))
В ие8 при анимации пнг становится с черной обводкой...

Если задать картинке фон конкретный, тогда все найс.. но мне нужно прозрачный..
Пробовал использовать фильтр(градиент), ничего не изменилось...
Кто знает как решить проблему?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анимация gif картинки при нажатии на ссылку ainur777 Общие вопросы Javascript 2 06.07.2014 16:23
При повторении несколько раз animate - рассинхрон... Petja jQuery 4 21.05.2013 12:58
несколько одновременных анимаций zlodiak Общие вопросы Javascript 4 15.04.2013 13:41
Анимация. Помогите понять почему не работает. kadurban jQuery 4 08.07.2010 20:50
Цикличность анимация? SashaBorandi jQuery 1 25.12.2008 09:20