Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.08.2015, 16:21
Аспирант
Отправить личное сообщение для pifon Посмотреть профиль Найти все сообщения от pifon
 
Регистрация: 17.07.2013
Сообщений: 46

Простейший параллакс jQuery не получается...
Всем привет!

Возник интересный вопрос:
Допустим у нас есть большой блок с несколькими вложенными элементами

<div class="main">
  <button class="btn">Кнопка</button>
  <p>Какой-то текст</p>
  <div class="sub">
    <!--Всякие элементы блока-->
  </div>
</div>


Скажем, у нас выполняется следующая jQuery функция:

$('.main').animate({marginLeft : 500}, 400);


Как сделать, чтобы вложенные в блок элементы сдвигались, скажем, не за 400, а за 500 мс, при этом родитель продолжал сдвигаться за 400 (своеобразный параллакс)?

Может есть какая-то библиотека, или готовые решения в голове многоуважаемых разработчиков?

Спасибо! )
Ответить с цитированием
  #2 (permalink)  
Старый 08.08.2015, 16:33
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="Keywords" content="">
<meta name="description" content="">
<title>ГГ</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>
<div class="main">
    Это гг
  <button class="btn">Кнопка</button>
  <p>Какой-то текст</p>
  <div class="sub">
    <!--Всякие элементы блока-->
  </div>
</div>
<script>
    $('.main').animate({marginLeft : 500}, 400);
    $('.main *').animate({marginLeft : 100}, 500);
</script>

</body>

</html>

Последний раз редактировалось EmperioAf, 08.08.2015 в 17:11.
Ответить с цитированием
  #3 (permalink)  
Старый 08.08.2015, 16:46
Аспирант
Отправить личное сообщение для pifon Посмотреть профиль Найти все сообщения от pifon
 
Регистрация: 17.07.2013
Сообщений: 46

Так в этом случае вложенные элементы сместятся в итоге относительно родительского на 100px влево, нет?
Ответить с цитированием
  #4 (permalink)  
Старый 08.08.2015, 17:13
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

Сообщение от pifon Посмотреть сообщение
Так в этом случае вложенные элементы сместятся в итоге относительно родительского на 100px влево, нет?
вы правы. Вообще говоря события складываются в очередь
http://jquery.page2page.ru/index.php...очереди
поэтому не представляю как это можно сделать
Ответить с цитированием
  #5 (permalink)  
Старый 08.08.2015, 17:30
Аспирант
Отправить личное сообщение для pifon Посмотреть профиль Найти все сообщения от pifon
 
Регистрация: 17.07.2013
Сообщений: 46

Придумал решение) Может кому понадобится.

Поставил библиотеку jquery.transit.js (качать тут - https://github.com/rstacruz/jquery.Transit)

Позволяет через .animate() плавно управлять css3 свойством transform.

Далее вводим HTML атрибут data-parallax:

<div class="main">
  <button class="btn" data-parallax="100">Кнопка</button>
  <p>Какой-то текст</p>
  <div class="sub" data-parallax="150">
    <!--Всякие элементы блока-->
  </div>
</div>


И делаем параллельно такую штуку:

$('.main').animate({marginLeft : 500}, 400);

$('.main [data-parallax]').each(function() {
  var $t = $(this);
  $t.animate({
           x : $t.attr('data-parallax')+'px'
          }, 200, function() {
                      $t.animate({
                        x : 0
                      }, 400);
                    });
});


Для красоты можно будет использовать функции а-ля jquery.easing.js.

Последний раз редактировалось pifon, 08.08.2015 в 17:37.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамически загружаемая jQuery и jQuery-функции в одном файле 67bytes Общие вопросы Javascript 6 06.03.2013 09:01
2 разных версии jquery agert Events/DOM/Window 8 19.10.2012 09:55
JQuery и Opera 12 demoni2004 jQuery 13 21.06.2012 14:32
Вставка jQuery в html шаблон CaIIIKiH Общие вопросы Javascript 4 17.05.2012 17:26
JQuery CSS анализатор javascript jQuery 2 15.08.2010 21:27