2015-07-24 6 views
0

У меня есть #foo элемент скрыт, и мне нужно, чтобы показать его с zoomIn CSS анимации (которые приносят элемент из opacity:0 в opacity:1.Показывая скрытый элемент с непрозрачностью-анимации

Это код, который я» м с помощью:

CSS

#foo { 
    opacity: 0; 
    ... 
} 

// Zoom In animation 
@keyframes zoomIn { 
    0% { 
    opacity: 0; 
    transform: scale3d(.3, .3, .3); 
    } 
    50% { 
    opacity: 1; 
    } 
} 

.zoomIn { 
    animation: zoomIn .2s ease-in-out 0s both; 
} 

JS

$(document).ready(function() { 
    $("#foo").addClass("zoomIn"); 
});​ 

С приведенным выше кодом я вижу анимацию, а затем элемент #foo снова исчезает. Он не содержит opacity:1. Как это решить?

ответ

1

О Keyframes

В дополнение к посту Slugge, мне было интересно, почему вы закончить анимацию в 50%. Я думаю, вы должны закончить его на 100% (особенно, если вы хотите, чтобы opacity остался на 1). Или вместо 0% {} 100% {}, вы можете использовать from {} to {}.

@keyframes zoomIn { 
    0% { 
    opacity: 0; 
    transform: scale3d(.3, .3, .3); 
    } 
    100% { 
    opacity: 1; 
    } 
} 

Об другого решения

Я думаю, было бы проще просто определить transition и «активный» класс вместо использования ключевых кадров.

#foo { 
    opacity: 0; 
    transition: opacity 0.2s ease-out; 
} 

#foo.active { 
    transform: scale3d(.3, .3, .3); 
    opacity: 1; 
} 

затем

$(document).ready(function() { 
    $("#foo").addClass("active"); 
});​ 

Вы можете добавить переходtransform, а также с transition: opacity 0.2s ease-out, transform 0.2s ease-out; или transition: all 0.2s ease-out;

Good Luck»

+0

Я взял эту анимацию из библиотеки animate.css https://github.com/daneden/animate.css/blob/master/source/zooming_entrances/zoomIn.css. Я также не понимаю, почему они используют 50% как конец. –

1

Вам нужно определить, что происходит в конце анимации, это можно сделать с помощью свойства «форвардов» анимации-заполнения-режима, для этого требуется, чтобы анимация имела конец (не может заканчиваться на 50%, необходимо конец на 100% или от-до) так изменить:

.zoomIn { 
    animation: zoomIn .2s ease-in-out 0s both; 
} 

к:

.zoomIn { 
    animation: zoomIn .2s ease-in-out 0s forwards; 
} 

используя оба, вы сказать, что элемент должен как использовать вперед и назад, когда вперед это «конец «анимации, а назад -« начало »анимации. Поэтому у вас будет непрозрачность: 0 и непрозрачность: 1, и, по-видимому, обратное значение является более сильным из двух.

+0

С форвардов это то же самое. Я вижу анимацию, а затем элемент возвращается к непрозрачности 0 –

+0

Подождите, я добавил в @keyframe 100% -ный шаг с непрозрачностью: 1 (удерживая оба в анимации), и теперь он работает ... Я нахожусь в Chrome. Ты тоже? Это может быть ошибка Chrome –

+0

Это работает для меня с моим методом: http: // jsfiddle.net/u03pzjky /, а также теперь вижу, что вы используете 50%, ключевой кадр должен иметь конец (100% или до) обновленный мой ответ – Slugge

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