2014-10-28 3 views
0

아래 애니메이션에 필요한 클래스를 성공적으로 추가하는 jQuery가 있습니다.비 크롬 브라우저에서의 애니메이션 문제

1) 먼저 아래의 애니메이션은 Chrome에서만 재생됩니다. 내 IE (버전 11.0) 및 Firefox (32.0.3)는 애니메이션을 전혀 재생하지 않습니다.

2) 둘째, 'opacity : 1;'이 없으면 둘째. 내 애니메이션 클래스에서 요소는 불투명도 0 (원래 값)으로 사라집니다. 애니메이션에서 설정하지 않고도 애니메이션의 최종 값을 유지하는 더 좋은 방법이 있습니까? 애니메이션 클래스에서 요소의 속성을 설정하는 것이 직관적이지 않은 것처럼 보입니다. 키 프레임 이전, 이후에 적용 여부가 명확하지 않기 때문입니다.

HTML :

<!-- Appear after 1 second --> 
<h1 data-appear='1'>1</h1> 

CSS :

h1 { 
    opacity: 0; 
} 

@-webkit-keyframes appear { 
    0% { opacity: 0; } 
    50% { opacity: 0; } 
    100% { opacity: 1; } 
} 
@-moz-keyframes appear { 
    0% { opacity: 0; } 
    50% { opacity: 0; } 
    100% { opacity: 1; } 
} 
@-o-keyframes appear { 
    0% { opacity: 0; } 
    50% { opacity: 0; } 
    100% { opacity: 1; } 
} 
@keyframes appear { 
    0% { opacity: 0; } 
    50% { opacity: 0; } 
    100% { opacity: 1; } 
} 

.appear.delay1 { 
    animation-duration: 1s; 
    -o-animation-duration: 1s; 
    -moz-animation-duration: 1s; 
    -webkit-animation-duration: 1s; 

    animation: appear; 
    -o-animation-name: appear; 
    -moz-animation-name: appear; 
    -webkit-animation-name: appear; 

    opacity: 1; 
} 

답변

2

1)에 CSS 규칙의 순서 내의 비밀 거짓말. 기간을 정의 할 때 아직 애니메이션을 정의하지 않았습니다. 나는 순서를 전환 할 경우 최신 파이어 폭스에서 나를 위해 작동 :

.appear.delay1{ 

    animation: appear; 
    -o-animation: appear; 
    -moz-animation: appear; 
    -webkit-animation: appear; 

    animation-duration: 1s; 
    -o-animation-duration: 1s; 
    -moz-animation-duration: 1s; 
    -webkit-animation-duration: 1s; 
} 

2) 당신은 채우기 모드를 정의하면 불투명도를 정의 할 필요가 없습니다. 채우기 모드를 사용하면 애니메이션이 완료 될 때 애니메이션 상태를 지정할 수 있습니다. 이 경우 100 %를 고수하기를 원하기 때문에 채우기 모드를 전달으로 설정해야합니다.

-o-animation-fill-mode: forwards; 
-moz-animation-fill-mode: forwards; 
-webkit-animation-fill-mode: forwards; 
animation-fill-mode: forwards; 

나는 다음과 바이올린에 모두 함께 재현 :

http://jsfiddle.net/mxa377m4/

+0

는 브라우저의 순서는 중요합니까? 사람들은 브라우저 지원 목록 맨 아래에 가장 기본적인 성명서 (경우에 따라 '애니메이션 채우기 모드')를 배치하는 경향이 있음을 알았습니다. – mariocatch

+0

나는 그것이 정말로 중요하지 않다고 생각한다. 필자는 지원되는 최신 기술이 요소에 적용되는 것이라고 생각합니다. 그래서 예를 들면 : 최신 크롬이'-webkit'과 접두사가없는 것을 모두 지원한다면. 맨 아래 문장을 사용합니다. 위의 코드에서'animation-fill-mode'는 어느 것입니까? 모든 진술이 동등하다면 그것은 중요하지 않습니다. 벤더 구현이 고정되지 않은 W3C와 다른 경우, 그렇습니다. – Hless

+0

그래서 엘리먼트의 너비를 5 번 선언하고 매번 다른 값으로 설정하는 것과 비슷합니다 ... 최근의 것이 사용됩니다. 따라서 브라우저가 여러 접두사를 지원하면 모두 접두사와 동등하므로 최신 접두어가 우선합니다. 나는 그들이 "감사"하는 말을 피하기 위해 말하지만, 무엇이든간에 - 빠른 결과와 훌륭한 통찰력에 감사한다. – mariocatch