2016-09-26 4 views
0

Любопытно узнать, есть ли способ использовать jQuery для обратного направления анимации ключевого кадра CSS в середине пути - не перезапускать первую точку.jQuery изменить направление анимации ключевого кадра CSS на полпути через

Вот текущий код для бесконечной/чередующейся панорамы, где он будет чередовать направление, если вы щелкните изображение. Он просто заменит класс и перезапустит анимацию с самого начала.

Однако моя цель состоит в том, чтобы иметь возможность изменять направление на полпути после нажатия. Любые советы приветствуются.

http://jsfiddle.net/JQjGZ/210/

CSS:

#panorama-scroll { 
width: 100%; 
height: 512px; 
margin: 0; 
background: url(https://c2.staticflickr.com/2/1519/24649255286_03bb5ab0e3_b.jpg) repeat-x; 
} 

#panorama-scroll.forward { 
-webkit-animation: backgroundScroll 15s linear infinite; 
-moz-animation: backgroundScroll 15s linear infinite; 
animation: backgroundScroll 15s linear infinite; 

} 

@-webkit-keyframes backgroundScroll { 
from {background-position: 0 0;} 
to {background-position: -1024px 0;} 
} 
@-moz-keyframes backgroundScroll { 
from {background-position: 0 0;} 
to {background-position: -1024px 0;} 
} 
@keyframes backgroundScroll { 
from {background-position: 0 0;} 
to {background-position: -1024px 0;} 
} 

#panorama-scroll.reverse { 
-webkit-animation: backgroundScrollreverse 15s linear infinite; 
-moz-animation: backgroundScrollreverse 15s linear infinite; 
animation: backgroundScrollreverse 15s linear infinite; 
} 

@-webkit-keyframes backgroundScrollreverse { 
from {background-position: 0 0;} 
to {background-position: 1024px 0;} 
} 
@-moz-keyframes backgroundScrollreverse { 
from {background-position: 0 0;} 
to {background-position: 1024px 0;} 
} 
@keyframes backgroundScrollreverse { 
from {background-position: 0 0;} 
to {background-position: 1024px 0;} 
} 

Javascript

$(document).ready(function() { 
var content = $('#panorama-scroll'); 

$('#panorama-scroll').live('click', function() { 
    $(this).toggle(function() { 
     content.removeClass('forward').addClass('reverse'); 
    }, function() { 
     content.removeClass('reverse').addClass('forward'); 
    }).trigger('click'); 
}); 
}); 
+0

Почему бы вам не попробовать сделать это с помощью простого CSS ключевых кадров, если она не включает в себя любой тип изменения поведения с течением времени? – snkv

+0

@Sqnkov thx, хотя я не уверен, что я следую. Есть ли способ использовать ключевые кадры для изменения направления на полпути, не начиная с первой позиции? Это было бы прекрасно. В настоящее время я не нашел способ сделать это, не запустив его из первого ключевого кадра, как вы можете видеть в примере. Попробовали обратное, альтернативное и т. Д. Я видел способ сделать это с преобразованием вращения, но не с x, y в x, y – Chumtarou

+0

Я, хотя вы полностью осознали синтаксис ключевого кадра, поэтому я перешел к моей последней мысли, извините для этого. – snkv

ответ

0

Ваши текущие анимации состояний используют "от" и "до" заявления, что не очень удобно, когда Вы получаете вниз для создания некоторых фанковых анимированных действий. Вам нужна вариация, а не линейное завершение.

Что вы можете сделать, это использовать percentage values для состояний анимации.

Это Ваш код прямо сейчас:

@-webkit-keyframes backgroundScroll { 
from {background-position: 0 0;} 
to {background-position: -1024px 0;} 
} 

Это должно быть что-то вроде этого, если вы хотите, чтобы изменить направление на полпути корыто:

@-webkit-keyframes backgroundScroll { 
0% {background-position: 0 0;} 
50% {background-position: -512px 0;} 
100% {background-position: 0 0;} 
} 

Чтобы изменить направление вашего CSS анимации вы должны использовать animation-play-state. После этого вы можете просто применить к нему некоторые действия jQuery по своему усмотрению.

Существует тщательное объяснение о том, что я имею в виду here.

+0

Заранее вам за помощь! Я думаю, что мое объяснение было очень бедным и вызвало путаницу. Пожалуйста, позвольте мне уточнить: я надеюсь, что если кто-то щелкнет изображение (или стрелки направления в конце концов), он сделает бесконечно прокручивающуюся панораму в другом направлении. В настоящее время он изменит направление, но начнет с первой точки. Я надеюсь, что это изменит направление в координатах, которые вы нажали. Пример: если он прокручивается на 200 пикселей влево, и вы нажимаете, он будет отходить от точки 200 пикселей и перейти в другое направление от этой точки. Не из 0. Надеюсь, это поможет извините за путаницу – Chumtarou

+0

@Chumtarou, пожалуйста, взгляните на мой отредактированный ответ выше. – snkv

+0

спасибо - я пытался воспроизвести состояние анимации, и хотя я могу приостановить его, изменение направления с этой координаты по-прежнему остается загадкой. Возможно, мне может понадобиться сделать это полностью с JQuery. Будете продолжать. Thx снова тем временем. – Chumtarou