Saya menjalankan animasi pada beberapa elemen yang diatur opacity: 0;
dalam CSS. Kelas animasi diterapkan onClick, dan, menggunakan keyframes, itu mengubah opacity dari 0
ke 1
(antara lain).
Sayangnya, ketika animasi selesai, elemen kembali ke opacity: 0
(di Firefox dan Chrome). Pemikiran alami saya adalah bahwa elemen animasi mempertahankan keadaan akhir, mengesampingkan sifat asli mereka. Apakah ini tidak benar? Dan jika tidak, bagaimana saya bisa mendapatkan elemen untuk melakukannya?
Kode (versi awalan tidak termasuk):
@keyframes bubble {
0% { transform:scale(0.5); opacity:0.0; }
50% { transform:scale(1.2); opacity:0.5; }
100% { transform:scale(1.0); opacity:1.0; }
}
css
css-animations
Dan
sumber
sumber
Jawaban:
Coba tambahkan
animation-fill-mode: forwards;
. Misalnya seperti ini:sumber
forwards
nilaianimation-fill-mode
properti memastikan elemen akan menahan keadaan keyframe animasi terakhir setelah animasi berakhir. misalnya jika animasi Anda berubahwidth
dari 0 ke 100px, properti ini memastikan elemen tetap 100px lebar setelah animasi berakhir.100% / to
titik@keyframe
jika tidak, itu tidak akan berhasil.Jika Anda menggunakan lebih banyak atribut animasi, tulisan singkatnya adalah:
Ini memberi:
2s
durasilinear
fungsi waktu0.5s
menunda1
iteration-count (bisa tak terbatas)normal
arahforwards
mode isi (atur mundur jika Anda ingin memiliki kompatibilitas untuk menggunakan posisi akhir sebagai keadaan akhir)sumber
JIKA TIDAK MENGGUNAKAN VERSI TANGAN SINGKAT: Pastikan
animation-fill-mode: forwards
adalah SETELAH deklarasi animasi atau tidak akan berfungsi ...vs.
sumber
Gunakan mode animasi-isi: ke depan;
Elemen akan mempertahankan nilai style yang diatur oleh keyframe terakhir (tergantung pada animasi-arah dan animasi-iterasi-hitung).
Catatan: Aturan @keyframes tidak didukung di Internet Explorer 9 dan versi yang lebih lama.
Contoh kerja
sumber