Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimanakah Saya Boleh Menggantikan Animasi SMIL yang Tidak Diguna pakai dengan CSS atau Animasi Web?

Bagaimanakah Saya Boleh Menggantikan Animasi SMIL yang Tidak Diguna pakai dengan CSS atau Animasi Web?

Linda Hamilton
Linda Hamiltonasal
2024-10-25 17:34:32389semak imbas

How Can I Replace Deprecated SMIL Animations with CSS or Web Animations?

Kesan Tuding: Animasi CSS atau Animasi Web

Masalah:
Teg animasi SMIL ditamatkan dan peralihan tuding CSS perlu dilaksanakan untuk menggantikannya.

Penyelesaian:
Alih keluar teg set dan tambah CSS pada elemen_tpl:hover pseudo-class:

<code class="css">.element_tpl:hover {
    stroke-opacity: 0.5;
}</code>

Kesan Penskalaan pada Tukar

Masalah:
Animasikan elemen untuk menskalakan beberapa kali pada perubahan yang dilakukan.

Penyelesaian:
Pertimbangkan pilihan berikut:

  1. Animasi CSS: Gunakan kerangka kunci CSS untuk mencapai penskalaan:
<code class="css">@keyframes scale-animation {
    0% { transform: scale(1); }
    50% { transform: scale(1.12); }
    100% { transform: scale(1); }
}</code>

Kemudian gunakan animasi pada elemen:

<code class="css">.element_tpl {
    animation: scale-animation 0.5s infinite alternate;
}</code>
  1. Animasi Web: Gunakan API Animasi Web untuk mengawal penskalaan secara pemrograman:
<code class="javascript">// Create a new animation
const animation = document.timeline.addAnimation();

// Define keyframes
const keyframes = [
    { transform: 'scale(1)', offset: 0 },
    { transform: 'scale(1.12)', offset: 0.5 },
    { transform: 'scale(1)', offset: 1 }
];

// Apply keyframes to the animation
animation.effect = keyframes;

// Target the element
animation.target = document.querySelector('.element_tpl');</code>

Skalakan Naik dan Turun pada Klik

Masalah:
Animasikan elemen untuk naik dan turun apabila mengklik.

Penyelesaian:

  1. Peralihan CSS: Gunakan peralihan CSS untuk mencetuskan perubahan skala pada acara turun tetikus dan naik tetikus:
<code class="css">.element_tpl {
    transition: transform 0.2s;
}

.element_tpl:active {
    transform: scale(1.1);
}</code>
  1. Animasi Web: Gunakan Animasi Web API untuk mengendalikan acara klik dan skala elemen dengan sewajarnya:
<code class="javascript">// Add event listener
document.querySelector('.element_tpl').addEventListener('click', (event) => {

    // Create a new animation
    const animation = document.timeline.addAnimation();

    // Define keyframes
    const keyframes = [
        { transform: 'scale(1)', offset: 0 },
        { transform: 'scale(1.1)', offset: 0.2 },
        { transform: 'scale(1)', offset: 0.4 },
    ];

    // Apply keyframes to the animation
    animation.effect = keyframes;

    // Target the element
    animation.target = event.target;
});</code>

Menyimpan Animasi SMIL

Masalah:
Pindahkan animasi SMIL ke CSS atau Animasi web.

Penyelesaian:
Gunakan poliisi SMIL yang dibuat oleh Eric Willigers: https://github.com/ericwilligers/svg-animation. Polyfill ini menukar animasi SMIL kepada Animasi Web, menyediakan cara alternatif untuk melaksanakannya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggantikan Animasi SMIL yang Tidak Diguna pakai dengan CSS atau Animasi Web?. 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