Показать сообщение отдельно
  #1 (permalink)  
Старый 14.05.2015, 16:45
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Вопрос каруселяписателям
Это вторая попытка, теперь покороче, но остается надежда что есть научный способ, функция, а не функционал.

Надо чтобы анимация дойдя до последней картинки пошла вспять. То есть 1 2 3 4 3 2 1 2 3 4... и так далее.

Перематывать с конца до начала портянку в несколько экранов - полная лажа, поэтому хочу сделать туда-сюда.

Код (основная часть). Подвижный элемент - m

total=items.length,
	max=total-1,
	curr=0,
	step=500,
	to,
	delay=3000,
	
	move=function(c){
		m.style.top=(-c*step)+'px';
	},
	move_n=function(e){
		if(curr<max)
			move(++curr);
		if(curr>=max)
			f=move_p;
	},
	move_p=function(e){
		if(curr>0)
			move(--curr);
		if(curr<=0)
			f=move_n;
	},
	go=function(e){
		to=W.setTimeout(f,delay);
	},
	f=move_n;
	
	m.addEventListener('transitionend',go);

	go();


Суть как видите такова: я заменяю функцию в зависимости от достижений. Иначе никак не получается, или получаются несусветные проверки и куча лишних переменных.

Есть более научный способ?
Ответить с цитированием