> 웹 프론트엔드 > CSS 튜토리얼 > CSS3 애니메이션이 Safari에서 작동하지 않는 이유는 무엇입니까?

CSS3 애니메이션이 Safari에서 작동하지 않는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-29 21:04:11
원래의
898명이 탐색했습니다.

Why Doesn't My CSS3 Animation Work in Safari?

Safari에서 CSS3 애니메이션이 작동하지 않습니다

CSS3를 지원하는 모든 브라우저에서 CSS3를 사용하는 애니메이션과 관련하여 몇 가지 문제가 발생했습니다. 완벽하게 실행됩니다. Safari를 제외한 모든 장치. 애니메이션 코드는 다음과 같습니다.

HTML

<div class="right">
    <div class="key-arm"><img src="images/landing/key-arm.png" alt="arm" /></div>
</div>
로그인 후 복사

CSS

.landing .board .right {
    /* ... other styles ... */
}
.landing .board .right .key-arm {
    /* ... other styles ... */
}

/*=== Key Arm Animation ===*/
@-webkit-keyframes keyarm {
    0% { -webkit-transform: rotate(0deg); }
    5% { -webkit-transform: rotate(-14deg); }
    10% { -webkit-transform: rotate(0deg); }
}

@-moz-keyframes keyarm {
    /* ... other keyframes ... */
}

@-ms-keyframes keyarm {
    /* ... other keyframes ... */
}

@-o-keyframes keyarm {
    /* ... other keyframes ... */
}

@keyframes keyarm{
    /* ... other keyframes ... */
}

.right .key-arm{
    /* ... other styles ... */
    -webkit-animation: keyarm 8s ease-in-out 0s infinite;
    -moz-animation: keyarm 8s ease-in-out 4s infinite;
    -ms-animation: keyarm 8s ease-in-out 4s infinite;
    -o-animation: keyarm 8s ease-in-out 4s infinite;
    animation: keyarm 8s ease-in-out 0s infinite;
}
로그인 후 복사

말씀하신 대로 Safari에서는 작동하지 않으며 애니메이션에서는 아무 일도 일어나지 않습니다. 또한 Safari에서만 화면 크기를 조정할 때만 "key-arm" div가 표시됩니다! DOM에 존재하지만 어떤 이유로 표시되지 않습니다!

뭐 잘못했어요?

답변

문제는 @keyframes에 있습니다. Safari 4에서는 @keyframes가 지원되지 않습니다. 같은 페이지에서 @keyframes를 사용하여 유효한 애니메이션을 만들 수 있기 때문에 이것은 이상합니다!

@keyframes를 지원하는 애니메이션 코드:

CSS

.board .rays{
    /* ... other styles ... */
}

.board .bottle{
    /* ... other styles ... */
}

/*=== Rays Animation ===*/
@-webkit-keyframes rays{
    0% { -webkit-transform: rotate(0deg); }
    100% { -webkit-transform: rotate(360deg); }
}
@-moz-keyframes rays{
    /* ... other keyframes ... */
}

.board .rays{
   -webkit-animation: rays 40s linear 0s infinite;
   -moz-animation: rays 40s linear 0s infinite;
   animation: rays 40s linear 0s infinite;
}
로그인 후 복사

HTML

<div class="board">
    <div class="rays"></div>
    <div class="bottle"></div>
</div>
로그인 후 복사

Safari 4를 사용하는 경우 매체(예: jsFiddle)에서 시도해 보면 애니메이션이 작동하지 않는다는 것을 알게 될 것입니다.

해결책

해결책을 찾았습니다. Safari에서 키프레임을 사용할 때는 전체 백분율을 사용해야 합니다.

이 방법은 작동하지 않습니다.

@-webkit-keyframes keyarm {
    0% { -webkit-transform: rotate(0deg); }
    5% { -webkit-transform: rotate(-14deg); }
    10% { -webkit-transform: rotate(0deg); }
}
로그인 후 복사

이 방법은 다음과 같습니다.

@-webkit-keyframes keyarm {
    0% { -webkit-transform: rotate(0deg); }
    5% { -webkit-transform: rotate(-14deg); }
    10% { -webkit-transform: rotate(0deg); }
    100% { -webkit-transform: rotate(0deg); }
}
로그인 후 복사

이유는 잘 모르겠습니다. 하지만 그것이 Safari가 작동하는 방식입니다!

위 내용은 CSS3 애니메이션이 Safari에서 작동하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿