Javascript.RU

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

Реализовать постепенную анимацию
Есть картинки, которые представлены в виде списка (<li>)
По умолчанию opacity 0 (прозрачные)

Хочу чтобы они после загрузки страницы страницы возвращались из прозрачность.

Реализую это с помощью jquery animate

Хочу сделать чтобы они возвращались из анимации не все сразу, а постепенно. То есть сначала одна, через секунду вторая, третья и т.д.

Полагаю для этого мне понадобится setTimeout.

Правилен ли ход моих мыслей или можно сделать проще?
Как лучше это все реализовать? Задать классы картинкам и обращаться к каждому из них по отдельности?? Или как-нибудь сделать с помощью цикла for?
Ответить с цитированием
  #2 (permalink)  
Старый 01.04.2012, 23:17
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

для начала ,прочитать как работает jquery animate когда их несколько и всё сведётся к 20-25 символам

Последний раз редактировалось dmitriymar, 01.04.2012 в 23:20.
Ответить с цитированием
  #3 (permalink)  
Старый 02.04.2012, 00:07
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

имеете в виду callback?

то есть присвоить каждому <li> свой класс, и по очереди выполнять функцию animate?


А нельзя ли (я где-то читал, но забыл где..) поочередно обращаться к рядом лежащему <li> ?
Ответить с цитированием
  #4 (permalink)  
Старый 02.04.2012, 00:10
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

1 получить необходимые объекты через селектор
2 навесить на них всех анимате(они будут выполняться последовательно как только отработает один -начнёт работать другой)

если между ними нужна пауза -есть несколько способов.
от ... и до изменять прозрачность до несуществующих пределов -вот и пауза появиться

Сообщение от dmitry111
А нельзя ли (я где-то читал, но забыл где..) поочередно обращаться к рядом лежащему <li> ?
а зачем?
Сообщение от dmitry111
то есть присвоить каждому <li> свой класс,
а зачем,если можно сразу правильно написать селектор?

Последний раз редактировалось dmitriymar, 02.04.2012 в 00:13.
Ответить с цитированием
  #5 (permalink)  
Старый 02.04.2012, 00:19
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

В квери можно устанавливать задержку перед след. эффектом. Таким образом, код упрощается.

<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

<ul>
  <li><img src="http://cs9775.userapi.com/g34580657/e_0b7a4d23.jpg"></li>
  <li><img src="http://cs941.userapi.com/g1074652/e_1b5f8f2e.jpg"></li>
</ul>

<script>
$('img').each(function(i){
  // i - индекс текущего элемента в коллекции
  $(this).css({opacity:1, display:'none'}).delay(i*1000+600).fadeIn(600);
  // задержка для первой ---> 1000*0+600 => 600
  // для второй ---->  1000*1+600 => 1600
  // т.е. между появлениями разница в 1 сек.
});
</script>

Последний раз редактировалось melky, 02.04.2012 в 00:22.
Ответить с цитированием
  #6 (permalink)  
Старый 02.04.2012, 00:45
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

Сообщение от dmitriymar Посмотреть сообщение
1 получить необходимые объекты через селектор
2 навесить на них всех анимате(они будут выполняться последовательно как только отработает один -начнёт работать другой)

если между ними нужна пауза -есть несколько способов.
от ... и до изменять прозрачность до несуществующих пределов -вот и пауза появиться


а зачем?

а зачем,если можно сразу правильно написать селектор?



Не знаю это ли вы имели в виду. Получилось реализовать вот так:

<script type="text/javascript">

$(document).ready(function(){

$("#category_img li:first").animate ({  //первый элемент li
opacity:1
}, 1000 );

$("#category_img li:first + li").animate({ //второй
opacity:1
}, 2000 );

$("#category_img li:first + li + li").animate({ //третий
opacity:1
}, 3000 );


});

</script>



Все работает, но сам код слишком громоздкий.
Ответить с цитированием
  #7 (permalink)  
Старый 02.04.2012, 00:47
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

Сообщение от melky Посмотреть сообщение
В квери можно устанавливать задержку перед след. эффектом. Таким образом, код упрощается.

<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

<ul>
  <li><img src="http://cs9775.userapi.com/g34580657/e_0b7a4d23.jpg"></li>
  <li><img src="http://cs941.userapi.com/g1074652/e_1b5f8f2e.jpg"></li>
</ul>

<script>
$('img').each(function(i){
  // i - индекс текущего элемента в коллекции
  $(this).css({opacity:1, display:'none'}).delay(i*1000+600).fadeIn(600);
  // задержка для первой ---> 1000*0+600 => 600
  // для второй ---->  1000*1+600 => 1600
  // т.е. между появлениями разница в 1 сек.
});
</script>

Да, этот лучше чем у меня! Спасибо!
Ответить с цитированием
  #8 (permalink)  
Старый 02.04.2012, 01:24
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

Сейчас применил версию реализованную через each .

Обидно что из-за display:none, элементы появляются не из места где должны находится.


А можно как-нибудь ужать мой скрипт?

Вот этот который :
<script type="text/javascript">

$(document).ready(function(){

$("#category_img li:first").animate ({  //первый элемент li
opacity:1
}, 1000 );

$("#category_img li:first + li").animate({ //второй
opacity:1
}, 2000 );

$("#category_img li:first + li + li").animate({ //третий
opacity:1
}, 3000 );


});

</script>
Ответить с цитированием
  #9 (permalink)  
Старый 02.04.2012, 08:54
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от dmitry111 Посмотреть сообщение
Сейчас применил версию реализованную через each .

Обидно что из-за display:none, элементы появляются не из места где должны находится.
виновата эта строчка, наверное. лень разбираться.
$(this).css({opacity:1, display:'none'}).delay(i*1000+600).fadeIn(600);

Сообщение от dmitry111 Посмотреть сообщение
А можно как-нибудь ужать мой скрипт?
Вот этот который
$(function(){

     $("#category_img li").each(function(i){
          $(this).delay(1000*i).animate ({ 
               opacity:1
          }, 1000 );

     });
});
Ответить с цитированием
  #10 (permalink)  
Старый 02.04.2012, 13:59
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

А ну вот, что и хотел..

Возник вопрос по тегу <noscript>, точнее по его реализации.

Можно ли в нем прописывает css правила и ставить его в <head>?


Дело в том, что с практической стороны этот код в хеде работает:

<head>
<noscript>
<style type="text/css">#category_img li{opacity:1;}</style>
</noscript>
<!--если отключен js, картинки вернут свойство opacity:1-->
</head>


Код при этом остается валидным.
Но информации по <noscript> в данном применении я не встречал.

Можно ли так писать?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализовать функционал Armen Работа 1 25.02.2011 04:12
Как вовремя остановить анимацию poorking Общие вопросы Javascript 2 11.02.2011 19:06
Как реализовать.. PaperPlane Общие вопросы Javascript 17 15.11.2010 08:14
Как реализовать взаимодействие окон? JSTalker ExtJS 1 29.06.2010 14:29
Как реализовать? Fliand Элементы интерфейса 4 22.08.2009 19:47