Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Поменять местами ширину и высоту (анимация) (https://javascript.ru/forum/jquery/65645-pomenyat-mestami-shirinu-i-vysotu-animaciya.html)

рони 31.10.2016 22:30

Цитата:

Сообщение от Black_Star
как стартовать через setTimeout

http://javascript.ru/forum/misc/6550...tml#post432635

Black_Star 31.10.2016 23:42

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

window.onload = function () {

		var $elem = $('#bigBlock div');
		var len = $('#bigBlock div').length;
		var i = 0;

		
		for (i = 0; i < len; i++){
				(function(i) {

						var el = $elem[i];
						var width = el.scrollWidth,
						      height = el.scrollHeight;

						setTimeout(function() {
*!*
						  el.addClass('animated flip'); // не работает  
*/!*

								el.style.width = height+'px';
								el.style.height = width+'px';

						}, 1000*i);
				}) (i);
		}

рони 01.11.2016 00:06

Цитата:

Сообщение от Black_Star
не работает

что не работает?
выкиньте цикл и запускайте следущую "анимацию" по окончанию предыдущей. гуглить transitionend

Black_Star 01.11.2016 14:01

Цитата:

Сообщение от рони
выкиньте цикл и запускайте следущую "анимацию" по окончанию предыдущей. гуглить transitionend

Цикл здесь очень необходим.
Я наверное как-то криво изъясняюсь. Попробую объяснить все пошагово.
1)Есть большое поле с дивами(у каждого свои размеры и каждый занимает свою позицию в пространстве + каждый див имеет класс picture1);
2)Ждем 2сек (- это время первой задержки, во время нее ничего не происходит)
3) Первому диву данного блока прискаевается классы с анимацией .toggleClass('animated flip') ( время анимации я задаю через CSS свойства, допустим 1,5сек) + класс picture1 заменяется picture2 только у этого дива
4) Первый див меняет свои размеры (высота=ширине, ширина=высоте)
5) Первый (уже измененный) див меняет свое положение в пространстве.
#bigBlock .picture2:nth-child(1) {
		top: 36%;
		left: 57%;		
}

6) С первого класса удаляются классы анимации .toggleClass('animated flip')
7) пункты 3-6 проделываются по очереди с каждым дивом до i<$('#bigBlock div').length;
8) Все дивы заняли новые позиции, и у них всех есть класс picture2 . Ждем 2сек.
9)Идет повтор от 3 - 6 для каждого дива .
10) Все дивы заняли новые позиции, и у них всех есть класс picture3 . Ждем 2сек.
11) Цикл продолжается пока не доходит picture N
12) Цикл идет с picture N в picture 1:)

рони 01.11.2016 14:28

Black_Star,
пока к пост №13 добавить нечего ...


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