2017-01-23 4 views
1

Вот что я пытаюсь выяснить, но без использования ключевого кадра 51% как хакерский способ реализовать изменение transform-origin. Вот Fiddle Demo.Как изменить свойство в анимации CSS внезапно без анимации

@keyframes spin { 
    0% { 
    transform-origin: 50% 0; 
    transform: perspective(800px) rotateX(0deg) translateZ(0px); 
    } 
    50% { 
    transform-origin: 50% 0; 
    transform: perspective(800px) rotateX(360deg) translateZ(0px); 
    } 
    51% { 
    transform-origin: 50% 100%; /* hacky way to instantly change transform-origin */ 
    } 
    100% { 
    transform-origin: 50% 100%; 
    transform: perspective(800px) rotateX(0deg) translateZ(0px); 
    } 
} 
+0

Как о чем-то вроде [это] (http://jsfiddle.net/p7 pswnpq/2 /), используя две анимации и функцию «шагов» для анимации начала? Я не думаю, что это возможно только с одним. – Harry

+0

Почему это считается хаки? – Louis

+1

@Harry Спасибо! Это именно то, что я искал! [Луис, я считаю это взломанным, потому что это не обходное решение) – artiestie

ответ

0

Как я уже упоминал в своем комментарии, не никакого способа для достижения этой цели с помощью только одной анимации. Я бы не назвал ваш первоначальный подход hacky, потому что внезапное изменение означает добавление нового ключевого кадра сразу после предыдущего (50% и 51%), но я как бы понимаю, что вы хотите сказать.

Одним из возможных Альтернативой является использовать два анимации - один для преобразования, а другой для изменения спектрально происхождения. Здесь мы можем сделать вторую анимацию (изменение трансформации) самостоятельно, используя функцию синхронизации steps (или step-end), чтобы это изменение происходило внезапно.

(Примечание:. я обеспечиваю эту опцию только в качестве ответа на ваш вопрос, я бы до сих пор предпочитают более ранний подход и избегать наличия двух различных правил ключевых кадров для выполнения той же анимации.)

Ниже приведен пример фрагмент кода:

.image { 
 
    position: absolute; 
 
    top: 50%; 
 
    left: 50%; 
 
    width: 120px; 
 
    height: 120px; 
 
    margin: -60px 0 0 -60px; 
 
    animation: spin 4s linear infinite, origin 4s step-end infinite; 
 
    transform-origin: 50% 0; 
 
} 
 
@keyframes spin { 
 
    0% { 
 
    transform: perspective(800px) rotateX(0deg) translateZ(0px); 
 
    } 
 
    50% { 
 
    transform: perspective(800px) rotateX(360deg) translateZ(0px); 
 
    } 
 
    100% { 
 
    transform: perspective(800px) rotateX(0deg) translateZ(0px); 
 
    } 
 
} 
 
@keyframes origin { 
 
    50% { 
 
    transform-origin: 50% 100%; 
 
    } 
 
}
<img class="image" src="http://makeameme.org/media/templates/120/grumpy_cat.jpg" alt="" width="120" height="120">

 Смежные вопросы

  • Нет связанных вопросов^_^