Rumah >hujung hadapan web >tutorial css >Mengapa Animasi CSS3 Saya Tidak Berfungsi dalam Safari?

Mengapa Animasi CSS3 Saya Tidak Berfungsi dalam Safari?

Patricia Arquette
Patricia Arquetteasal
2024-11-29 21:04:11900semak imbas

Why Doesn't My CSS3 Animation Work in Safari?

Animasi CSS3 tidak berfungsi dalam Safari

Anda menghadapi beberapa isu dengan animasi yang menggunakan CSS3 dalam semua penyemak imbas yang menyokong CSS3 Ia berjalan dengan sempurna pada semua peranti kecuali Safari. Kod animasi anda adalah seperti berikut:

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;
}

Seperti yang anda nyatakan, ini Tidak berfungsi dalam Safari, tiada apa yang berlaku dalam animasi. Selain itu, juga hanya dalam Safari, div "lengan kunci" hanya muncul apabila anda mengubah saiz skrin! Ia wujud dalam DOM, tetapi atas sebab tertentu ia tidak muncul!

Apa yang anda buat salah?

Jawapan

Masalahnya ialah @keyframes. Dalam Safari 4, @keyframes tidak disokong. Ini pelik kerana pada halaman yang sama anda boleh menggunakan @keyframes untuk mencipta animasi yang sah!

Kod animasi yang menyokong @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>

Jika anda menggunakan Safari 4 Cuba dalam medium (cth. dalam jsFiddle) dan anda akan mendapati bahawa animasi tidak berfungsi.

Penyelesaian

Menemui penyelesaiannya. Apabila menggunakan bingkai utama dalam Safari anda perlu menggunakan peratusan penuh:

Ini tidak akan berfungsi:

@-webkit-keyframes keyarm {
    0% { -webkit-transform: rotate(0deg); }
    5% { -webkit-transform: rotate(-14deg); }
    10% { -webkit-transform: rotate(0deg); }
}

Yang ini akan:

@-webkit-keyframes keyarm {
    0% { -webkit-transform: rotate(0deg); }
    5% { -webkit-transform: rotate(-14deg); }
    10% { -webkit-transform: rotate(0deg); }
    100% { -webkit-transform: rotate(0deg); }
}

Tidak pasti mengapa , tetapi itulah cara Safari berfungsi!

Atas ialah kandungan terperinci Mengapa Animasi CSS3 Saya Tidak Berfungsi dalam Safari?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn