Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Реализовать постепенную анимацию (https://javascript.ru/forum/misc/27070-realizovat-postepennuyu-animaciyu.html)

dmitry111 01.04.2012 23:00

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

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

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

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

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

Правилен ли ход моих мыслей или можно сделать проще?
Как лучше это все реализовать? Задать классы картинкам и обращаться к каждому из них по отдельности?? Или как-нибудь сделать с помощью цикла for?

dmitriymar 01.04.2012 23:17

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

dmitry111 02.04.2012 00:07

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

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


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

dmitriymar 02.04.2012 00:10

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

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

Цитата:

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

а зачем?
Цитата:

Сообщение от dmitry111
то есть присвоить каждому <li> свой класс,

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

melky 02.04.2012 00:19

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

<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>

dmitry111 02.04.2012 00:45

Цитата:

Сообщение от dmitriymar (Сообщение 166388)
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>



Все работает, но сам код слишком громоздкий. :(

dmitry111 02.04.2012 00:47

Цитата:

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

<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>


Да, этот лучше чем у меня! Спасибо!

dmitry111 02.04.2012 01:24

Сейчас применил версию реализованную через 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>

melky 02.04.2012 08:54

Цитата:

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

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

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

Цитата:

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

$(function(){

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

     });
});

dmitry111 02.04.2012 13:59

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

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

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


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

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


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

Можно ли так писать?

dmitry111 02.04.2012 17:51

оно не ниже, оно имеет больший приоритет.

Цитата:

Сообщение от Maxmaxmахimus
P.S. че правда ест люд и которые javascript отключают?

да, веб-разработчики, во время тестирования сайтов :)

dmitry111 02.04.2012 18:13

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 166557)
сам понял че за херню сморозил?
не - частица противопоставления,
но ведь те правила что ниже и имеют больший приоритет. А ты говоришь что нет. Получи CSS.

а, ну то есть да, в данном случае. Но, как мне кажется, не всегда то что ниже будет иметь большей приоритет.

T-sh 02.04.2012 18:25

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 166519)
можно, главное чтобы это css правило было определено ниже того правила которое делает их прозрачными. кэп

не главное :) про !important забыл :)

dmitry111 02.04.2012 21:43

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 166582)
А что тебе кажется?




Цитата:

Сообщение от Maxmaxmахimus
те правила что ниже и имеют больший приоритет.



<style type="text/css">
#category_img li.dd{opacity:0;}
#category_img li{opacity:1;}
</style>



:)

trikadin 03.04.2012 03:06

dmitry111, идите учить матчасть.

dmitry111 03.04.2012 13:39

Цитата:

Сообщение от trikadin (Сообщение 166649)
dmitry111, идите учить матчасть.

что именно?

я поправил Maxmaxmахimusа, потому что его фраза:

Цитата:

чтобы это css правило было определено ниже того правила которое делает их прозрачными.
неграмотна в формулировке.

А что если я хочу сделать выше? Разве не могу?

Поэтому правильно говорить "чтобы это css правило имело больший приоритет"!

melky 04.04.2012 00:35

Если приоритет у правил одинаковый, то применяетчя последнее (нижнее)

Если же приоритет поменять ( это можно сделать череЗ !important, element.style, или через правильно сформированные селекторы), то к элементу применится правило, имеющее наивысшый приоритет.

Марум, ты как всегда, Споришь, но мимо кассы :)

T-sh 04.04.2012 01:03

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 166871)
Хорошо я для слупков поясню,

important тут вообще не при чем, о нем речи не идет совершенно, dmitry111, Я тебе сказал как надо делать, делай. Если ты тугодом и поставишь у стилей выше important, и будешь удивляться их поведению, то я думаю тебе лучше не заниматься программированием а найти свое призвание, например на каком нибудь уютном заводике. подумай на днях.

вот кому бы подучить матчасть, так это тебе :)

лови плюху.

список факторов влияющих на приоритет Css свойства в авторских стилях по мере их убывания:

Использование Css свойства в атрибуте style вместе с Important

Использование Important в Css свойстве из внешнего файла таблиц стилей или же из тега style в Html коде

Использование Css свойства в атрибуте style

Использование большего числа селекторов Id для данного Css свойства

Использование большего числа селекторов классов, псевдоклассов и атрибутов для данного Css свойства

Использование большего числа селекторов тегов и псевдоэлементов для данного Css свойства

Более низкое расположение Css свойства в коде, при прочих равных условиях


цитата отсюда, где всё с работоспособными примерами :)

:) и кстати, ты сейчас послал на завод работать верстальщиков гугла, у которых стили напичканы !important'ами ;)

Shaci 04.04.2012 01:22

Цитата:

например на каком нибудь уютном заводике. подумай на днях.
Завод теперь последнее место работы :D?

T-sh 04.04.2012 01:30

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 166882)
T-sh,
боже , еще один тормоз.

:) смешной. вникай в суть спора, прежде чем спорить.

T-sh 04.04.2012 01:41

я вижу, что ты писал :) ты упираешься лишь в одно: всё что ниже — приоритетнее.. а тебе говорят, что то, что выше можно сделать ещё более приоритетнее. и это на самом деле так.

а теперь включи мозги и осознай, что ты не прав или подай резюме в ЖЭК. ;)

T-sh 04.04.2012 01:47

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 166888)
но зачем мне это говорят?
Нет вопрос прямой, зачем меня учить css и говорить мне что-то? я вопроса не поднимал. css знаю на отлично.
М?


в чем же?

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

не.. из ЖЭК'а тебя тоже попрут.. как пить дать...

перечитай всю ветку и может быть поймешь.. в противном случае я даже не знаю, как тебе что-нибудь объяснить..

dmitry111 04.04.2012 01:50

ну вы ваще...

Цитата:

Сообщение от melky (Сообщение 166870)
Если приоритет у правил одинаковый, то применяетчя последнее (нижнее)

Приоритe'т (лат. prior — первый, старший) — понятие, показывающее важность, первенство. (википедия).


Если правило одинаково, то приоритет у того, которое ниже в коде.


Цитата:

Сообщение от Maxmaxmахimus (Сообщение 166871)
Хорошо я для слупков поясню,

important тут вообще не при чем, о нем речи не идет совершенно, dmitry111, Я тебе сказал как надо делать, делай. Если ты тугодом и поставишь у стилей выше important, и будешь удивляться их поведению, то я думаю тебе лучше не заниматься программированием а найти свое призвание, например на каком нибудь уютном заводике. подумай на днях.

Я !important, за всю свою практику еще ни разу не использовал.
Если не ошибаюсь, !important был придуман для внешних css (браузерных).
Он конечно будет работать и в таблице стиля сайта, но не вижу смысла для него.

T-sh 04.04.2012 01:51

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 166891)
Потому что это менее удобно чем определение сразу после стиля. - отвечу я.

браво, ты решил за человека, что ему более удобно, а что менее! :victory:

поэтому насчет ЖЭК'а беру свои слова обратно.. не подавай туда резюме.. а-то прикрутишь унитаз к потолку и скажешь: "я знаю, что унитаз можно поставить на пол, но ТАК УДОБНЕЕ"..

T-sh 04.04.2012 01:59

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 166895)
тогда о чем вообще разговор? ты считаешь что я тебя пытался наебать или запутать не упомянув НЕ ПИСАТЬ импортант в стилях выше)?

T-sh,
в чем я не прав, я вас слушаю))

мда.. в общем.. ты во всём прав, ты самый лучший, самый красивый и твоё мнение по определению самое верное и вообще закон..

дальше сам допиши :)

T-sh 04.04.2012 02:02

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 166897)
T-sh,
но ведь ты сказал что я не прав)) так в чем же)?

:) конечно) сразу ведь на этом форуме понятно, что неадекват здесь я :)))

dmitry111 04.04.2012 02:11

Maxmaxmахimus,

Ты сказал неграмотно, я поправил.
Не думал что это вызовет здесь такой ср@ч..
Как говорить в дальнейшем решать тебе.

T-sh 04.04.2012 02:15

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 166902)
ты сам то улавливаешь логическую связь между моим вопросом и своим ответом?

конечно улавливаю, я ведь всё равно вижу твои комменты, даже после того, как ты их исправляешь ;)

ответ был на это:
Цитата:

Сообщение от Maxmaxmахimus
как я и думал, ты звездабол(врун) и тролль))


T-sh 04.04.2012 02:25

в том, что ты упрямый как баран.. этого достаточно? :)

misalin 09.04.2012 23:53

Добрый вечер!

Решил с помощью jQuery сделать менюшку для сайта, но т.к. всего второй раз имею дело с jQuery, скрипт получается громоздкий.

$(document).ready(function(){
$("header h1").animate({opacity: 1}, 1000);
});

$(document).ready(function() {
$('#logo').delay(1000).animate({opacity: 1}, 1000, function() {});
});

$(document).ready(function(){
$("#logo").click(function(){
$("#logo").animate({marginLeft:"76%", marginTop:"-15%"},1000);
$("header").animate({width:"75%", marginRight:"20%"},1000);});});

$(document).ready(function(){
$("#btn01").mouseover(function(){
$("#expo").stop().animate({opacity: 1, width:"250px", height:"250px", marginTop:'10%', marginLeft:'-20%'}, 1000);

$("#btn01").mouseover(function(){
$("#btn01").stop().animate({opacity: 1, height:"250px"}, 1000);});
});

$("#btn01").mouseout(function(){
$("#expo").stop().animate({opacity: 0, width:"50px", height:"50px"}, 1000);
$("#btn01").mouseout(function(){
$("#btn01").stop().animate({opacity: 1, height:"50px"}, 1000);});
});


$("#btn02").mouseover(function(){
$("#dres").stop().animate({opacity: 1, width:"250px", height:"250px"}, 1000);});
$("#btn02").mouseout(function(){
$("#dres").stop().animate({opacity: 0, width:"50px", height:"50px"}, 1000);});});

Т.е. при наведении на к.-л. кнопки в меню, появляется image +подменю.


Часовой пояс GMT +3, время: 18:42.