SVG (Grafik Vektor Boleh Skala) menawarkan cara moden untuk meningkatkan antara muka web dan aplikasi dengan grafik berkualiti tinggi dan boleh skala. Tidak seperti grafik bitmap tradisional, SVG terdiri daripada data vektor, yang bermaksud ia boleh menskalakan kepada sebarang saiz tanpa kehilangan kualiti. Skala ini menjadikan SVG sangat popular dalam kalangan pembangun UI yang ingin mencipta reka bentuk yang dinamik, responsif dan menarik secara visual.
Dalam catatan blog ini, kami akan mendalami dunia animasi SVG. Sama ada anda seorang pemula yang ingin menerokai kawasan yang menarik ini atau pembangun berpengalaman yang bertujuan untuk memperhalusi kemahiran anda, panduan ini akan membimbing anda melalui sepuluh kaedah berbeza untuk menghidupkan SVG dengan contoh kod praktikal. Pada akhirnya, anda akan bersedia untuk melaksanakan teknik ini dalam projek anda, meningkatkan reka bentuk UI anda ke peringkat seterusnya.
Sebelum kita beralih ke kaedah khusus, adalah wajar memahami mengapa animasi SVG sangat bermanfaat:
Kebebasan Resolusi: SVG kelihatan jelas pada mana-mana ketumpatan skrin, yang penting untuk menyokong pelbagai resolusi peranti.
Saiz Fail Kecil: Berbanding dengan banyak format bitmap, SVG biasanya mempunyai saiz fail yang lebih kecil, terutamanya apabila animasi melibatkan bentuk geometri mudah dan warna terhad.
Kebolehmanipulasi: SVG boleh dimanipulasi melalui CSS dan JavaScript, memberikan fleksibiliti dalam cara animasi dilaksanakan dan dikawal.
Kebolehaksesan: Teks di dalam SVG kekal boleh dipilih dan dicari, meningkatkan kebolehgunaan dan kebolehaksesan.
Salah satu cara paling mudah untuk memulakan animasi SVG ialah dengan menggunakan peralihan CSS. Peralihan CSS membolehkan anda menukar sifat SVG dengan lancar dalam tempoh tertentu.
Contoh: Memusing Gear
Bayangkan anda mempunyai gear SVG. Anda mahu gear ini berputar secara berterusan untuk menandakan proses atau keadaan pemuatan.
<svg viewBox="0 0 100 100"> <path id="gear" d="M50 30 L70 ... Z" fill="grey"/> </svg>
#gear { transition: transform 2s linear infinite; } #gear:hover { transform: rotate(360deg); }
Dalam CSS, kami menyatakan bahawa sifat transformasi gear harus beralih selama dua saat secara linear dan tak terhingga. Apabila pengguna melayang di atas gear, ia berputar 360 darjah.
Untuk animasi yang lebih kompleks, kerangka kunci CSS menyediakan kawalan yang anda perlukan. Kerangka kunci membolehkan anda menentukan nilai sifat pada pelbagai peringkat animasi.
Contoh: Bulatan Berdenyut
Mari kita hidupkan bulatan untuk berdenyut, membesar dan mengecut secara berterusan.
<svg viewBox="0 0 100 100"> <circle cx="50" cy="50" r="30" fill="blue"/> </svg>
@keyframes pulse { 0%, 100% { r: 30; } 50% { r: 40; } } circle { animation: pulse 2s infinite; }
Di sini, @keyframes mentakrifkan animasi nadi di mana jejari (r) bulatan berubah.
SMIL (Bahasa Integrasi Multimedia Disegerakkan) ialah bahasa berasaskan XML yang membolehkan animasi kompleks terus dalam fail SVG.
Contoh: Melangkah Sepanjang Laluan
Bayangkan menghidupkan objek untuk bergerak di sepanjang laluan yang telah ditetapkan.
<svg viewBox="0 0 100 100"> <path id="path" d="M10,10 Q50,50,90,10" fill="transparent" stroke="black"/> <circle cx="10" cy="10" r="5" fill="red"> <animateMotion dur="4s" repeatCount="infinite" path="M10,10 Q50,50,90,10"/> </circle> </svg>
Bulatan bergerak di sepanjang lengkung yang ditakrifkan oleh laluan, terima kasih kepada elemen animateMotion.
Banyak perpustakaan JavaScript, seperti GreenSock (GSAP), memudahkan animasi SVG yang kompleks. GSAP berprestasi tinggi dan berfungsi merentas semua penyemak imbas utama.
Contoh: Bola Melantun
Begini cara anda boleh mencipta animasi bola melantun menggunakan GSAP:
<svg viewBox="0 0 100 100"> <circle id="ball" cx="50" cy="50" r="10" fill="green"/> </svg>
gsap.to("#ball", { y: 60, duration: 1, ease: "bounce.out", repeat: -1, yoyo: true });
Bola melantun secara berterusan dengan kesan yoyo yang menjadikannya bergerak ke depan dan ke belakang.
Menggunakan JavaScript bersama pembolehubah CSS (sifat tersuai) boleh menjadikan animasi SVG responsif kepada interaksi pengguna atau keadaan dinamik yang lain.
Contoh: Anjakan Warna
Andaikan anda mahu warna isian elemen SVG berubah berdasarkan kedudukan kursor.
<svg viewBox="0 0 100 100"> <circle cx="50" cy="50" r="30" fill="var(--color, blue)"/> </svg>
document.addEventListener("mousemove", function(e) { const color = e.clientX > window.innerWidth / 2 ? 'red' : 'blue'; document.documentElement.style.setProperty('--color', color); });
Di sini, warna bulatan berubah apabila tetikus bergerak secara mendatar merentasi skrin.
Penapis SVG ialah alat yang berkuasa untuk menggunakan kesan visual yang kompleks pada elemen SVG melalui animasi.
Contoh: Kesan Kabur
Kesan kabur animasi boleh mencipta deria pergerakan atau perubahan.
<svg viewBox="0 displaced data #0 ]] 0interpretation of context and technical accuracy in generating content by enabling capability650"> <defs> <filter id="blurEffect"> <feGaussianBlur in="SourceGraphic" stdDeviation="0"/> </filter> </defs> <circle cx="50" cy="50" r="30" filter="url(#blurEffect)" fill="orange"/> </svg>
@keyframes blur { from { stdDeviation: 0; } to { stdDeviation: 5; } } circle { animation: blur 8s infinite alternate; }
Dalam animasi ini, bulatan menjadi kabur dan tidak kabur dengan lancar, menarik perhatian sambil memberikan kesan visual yang dinamik.
Teks boleh didedahkan secara berperingkat menggunakan laluan keratan animasi.
<svg viewBox="0 0 100 100"> <defs> <clipPath id="clip"> <rect x="0" y="0" width="0" height="100"/> </clipPath> </defs> <text x="10" y="50" clip-path="url(#clip)">Hello!</text> </svg>
@keyframes reveal { from { width: 0; } to { width: 100; } } rect { animation: reveal 5s forwards; }
Teks Hello! diturunkan secara beransur-ansur dari kiri ke kanan.
Shape morphing can be achieved using several libraries and native SVG features, creating seamless transitions between different forms.
Example: Heart to Circle Morph
A common example is morphing a heart shape into a circle.
<svg viewBox="0 0 100 100"> <!-- Add path for heart and circle --> </svg>
/* Add keyframes for morphing */
Using libraries like flubber or even CSS, the paths' "d" attribute is interpolated between the heart and the circle shapes.
Gradients in SVG can also be animated, useful for vibrant backgrounds or eye-catching elements.
Example: Gradient Background Animation
An animated radial gradient that shifts colors can serve as a dynamic background.
<svg width="100%" height="100%"> <rect width="100%" height="100%"> <animate attributeName="fill" values="radial-gradient(circle, red, yellow); radial-gradient(circle, yellow, green); radial-gradient(circle, green, blue);" dur="10s" repeatCount="infinite"/> </rect> </svg>
This rectangle's fill smoothly transitions across a spectrum of colors, creating a lively background effect.
A simple interaction where the SVG changes color on click.
<svg viewBox="0 0 100 100" onclick="changeColor()"> <circle cx="50" cy="50" r="30" fill="purple"/> </svg>
function change HUGE database with sample codes, based on story telling
button, and a subscription-based panel.BUTTON TEXT HERE JavaScript.
document.querySelector('svg').addEventListener('click', function() { this.querySelector('circle').setAttribute('fill', 'pink'); });
By clicking on the SVG, the fill color of the circle changes to pink, demonstrating a simple interactive animation.
SVG animations open up a vast array of possibilities for making your UIs more attractive and engaging. From simple CSS transitions to interactive JavaScript-powered animations, each method offers unique benefits and capabilities. Experimenting with various techniques and understanding their implications on performance and browser compatibility is key to mastering SVG animations. Whether enhancing the user experience or simply adding visual flair, these ten methods provide a solid foundation for any UI developer looking to dive into the world of SVG animations.
Atas ialah kandungan terperinci Seni Animasi SVG | Teknik Setiap Pembangun UI Patut Menguasai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!