2016-08-19 3 views
0

У меня есть анимация CSS с ключевыми кадрами на моей странице для элементов fadein/out. Проблема в том, что анимация fadeout отображается при загрузке страницы.Как предотвратить анимацию ключевого кадра css при загрузке страницы?

HTML:

<button class="toggle-good">Toggle display</button> 
<p class="box">I move nicely!</p> 

CSS:

.box { 
    height: 0; 
    opacity: 0; 
    animation: FadeOut 1s ease-in-out; 
} 
.box.active { 
    height: initial; 
    opacity: 1; 
    animation: FadeIn 1s ease-in-out; 
} 
@keyframes FadeIn { 
    0% { 
    opacity: 0; 
    height: initial; 
    } 
    100% { 
    opacity: 1; 
    height: initial; 
    } 
} 
@keyframes FadeOut { 
    0% { 
    opacity: 1; 
    height: initial; 
    } 
    99% { 
    opacity: 0; 
    height: initial; 
    } 
    100% { 
    height: 0; 
    opacity: 0; 
    height: 0; 
    } 
} 

JS:

$('button').on('click', function(e) { 
    $(this).siblings('.box').toggleClass('active'); 
}) 

Рабочий пример: http://codepen.io/MickL/pen/LkvWaA

+0

Возможный дубликат [Как предотвратить CSS ключевых кадров анимации для запуска при загрузке страницы?] (Http://stackoverflow.com/questions/27938900/how-to-prevent-css-keyframe-animation- to-run-on-page-load) –

+0

Судя по тому, что вы пытаетесь сделать, вам, вероятно, будет лучше с простым переходом. –

+0

Но я хочу изменить высоту до 0 после fadeout-animation. – Mick

ответ

2

Все вы должны сделать, это: animation-play-state: paused;

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

  1. Использовать свойство перехода, используя шаг-шаг и шаг-старт для видимости и указателей-событий.
  2. События указателя, используемые для предотвращения взаимодействия со скрытым элементом.
  3. Max-height используется для удаления объекта из потока документов при скрытии.

Я развернул ручку быстрого кода, чтобы показать пример.

http://codepen.io/SudoCat/pen/LkvyEJ?editors=0100

+0

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

+0

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

+0

На некотором отражении я понял дисплей: ни одна техника, о которой я изначально не упоминал, не сработает. Вместо этого я добавил свойство max-height на переход для удаления объекта из потока документа. –

0

Я опробован сиситемах возможности аренды. Только тот, который работал, должен был скрыть его JS, используя тайм-аут и абсолютное позиционирование.

Проблема будет в том случае, если анимация длиннее установленного таймаута. Или анимация должна отображаться до истечения таймаута.

$('.box').css({ 
    'position': 'absolute', 
    'top': '-9999px', 
    'left': '-9999px' 
}); 

setTimeout(function() { 
    $('.box').css({ 
     'position': 'relative', 
     'top': 'auto', 
     'left': 'auto' 
    }); 
}, 500); 
Смежные вопросы