2017-02-20 20 views
1

Я думаю, что все в названии. добавить класс с JavaScript, который в основном делает:css3 как вызвать событие, когда переход осуществляется на полпути?

.rotation { 
    transform:rotateY(180deg); 
    transition-timing-function: linear; 
    -webkit-transition-timing-function: linear; 
} 

Мне нужно знать, когда переход достиг 90 градусов. Эти значения приведены для примера. Проблема в том, что если я повторю 2 преобразования 90degs, я получаю небольшое отставание посередине, а не под Chrome, но под Microsoft Edge и Firefox.

Есть ли у кого-то решение, либо для запуска события на полпути, либо во избежание этого отставания при повторении перехода?

Спасибо!

+0

вы могли бы использовать анимацию, а затем контролировать то, что происходит в анимации с @keyframes – Danield

+0

у вас есть события, инициированные при достижении определенных ключевых кадров? Потому что нужно обновить что-то на странице, когда анимация или переход пройдены на полпути. – Joel

+0

Посмотрите на эту демонстрацию: http://codepen.io/danield770/pen/GrbXrQ - здесь я меняю цвет фона наполовину через анимацию – Danield

ответ

2

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

Я иногда использовал z-index, что вы можете выбрать другой. Тогда:

div { 
    transition: transform 1s linear, z-index 0.5s linear; 
    z-index: 1; 
} 
.rotation { 
    z-index: 2; 
    transform:rotateY(180deg); 
} 

Вы получите 2 события, первый в 0.5s

+0

Спасибо. Я также сделал некоторые тесты на моем конце, я использую ключевые кадры и анимацию с количеством анимации-итерации, установленным на определенное значение. Анимация событий запускается для каждой итерации после первого, так что кажется, что это также подходящее решение: я проверяю, находится ли мы в середине, прошедшее время передается как аргумент, и легко проверить, где мы находимся в процессе. – Joel

+0

Интересный вариант/временное решение @vals. – Harry