- CSS dan HTML boleh digabungkan untuk menambah kesan bunyi ke animasi CSS menggunakan elemen HTML. Ini boleh dicetuskan dengan JavaScript dan dapat meningkatkan pengalaman pengguna dalam kes -kes tertentu, seperti laman web artis dan permainan atau kandungan untuk kanak -kanak.
- Bahagian yang paling penting dalam proses animasi bunyi adalah menyesuaikan animasi CSS ke audio untuk memastikan pengalaman audio-visual yang tepat. Ini melibatkan penyegerakan kerangka utama animasi kepada data masa audio.
- Elemen digunakan untuk memperkenalkan audio ke dalam halaman. JavaScript digunakan untuk memanipulasi main balik. Dalam contoh ini, butang digunakan untuk memulakan dan menetapkan semula trek.
- Proses penyegerakan animasi CSS dengan audio HTML5 umumnya sama di pelayar yang berbeza. Walau bagaimanapun, tidak semua pelayar menyokong semua format audio HTML5. Oleh itu, pelbagai sumber untuk fail audio harus disediakan untuk memastikan keserasian dengan pelayar yang berbeza.
- Penggunaan animasi CSS dengan aliran audio langsung mungkin, tetapi lebih kompleks daripada dengan fail audio pra-rakaman. API Audio Web diperlukan untuk menganalisis aliran audio dalam masa nyata dan menyesuaikan animasi CSS dengan sewajarnya.
Walaupun bunyi di web tidak dialu -alukan secara universal, terdapat kes -kes apabila ia dapat memperkayakan pengalaman pengguna tanpa gangguan yang tidak perlu. Contohnya adalah laman web artis dan permainan atau kandungan untuk kanak -kanak. Bunyi juga boleh berguna dalam kes -kes tertentu kepada pelawat kurang upaya.
Bahagian yang paling penting dalam proses animasi bunyi adalah menyesuaikan animasi CSS anda ke audio untuk mencapai pengalaman audio-visual yang tepat. Dalam artikel ini, saya akan melalui langkah -langkah penyegerakan kekunci utama animasi ke data masa audio menggunakan contoh yang menarik dari jantung yang bergaya.
Lihat animasi pena CSS dengan bunyi: Heartbeat oleh SitePoint (@SitePoint) pada codepen.
Membina jantung
ramuan pertama yang kita perlukan adalah hati yang kita mahu bernyawa. Kami akan membina satu menggunakan elemen pseudo CSS. Memandangkan ia dibina dalam HTML dan bukannya menggunakan imej, walaupun hanya melalui unsur-unsur pseudo, memberi kita peluang untuk menghidupkan pelbagai sifat CSS untuk mewujudkan animasi yang lebih menarik.
kita sering dapat mencari lebih daripada satu cara untuk membina bentuk dengan cara ini, tetapi jika kita merancang untuk menghidupkannya, ia patut difikirkan tentang geometri dan bagaimana pilihan struktur yang berbeza mempengaruhi pergerakan dan memudahkan kod frames.Dalam kes ini, teknik yang paling mudah adalah menggunakan dua segi empat menegak yang dibulatkan di atas, diputar, dan diposisikan untuk bertindih untuk membentuk bentuk jantung. Saiz mereka ditetapkan menggunakan peratusan dan mereka benar -benar diposisikan dengan sedikit pertimbangan geometri sehingga mudah untuk skala bentuk asal dengan mengubah saiz kontena. Rectangles diputar 45 darjah mengikut arah jam dan berlawanan arah jam untuk membentuk bahagian kiri dan kanan jantung.
<span><span>.heart::before, </span></span><span><span>.heart::after</span> { </span> <span>background-color: red; </span> <span>content: ""; </span> <span>height: 80%; </span> <span>left: 25%; </span> <span>position: absolute; </span> <span>top: 2%; </span> <span>transform: translateZ(0) rotate(-45deg); </span> <span>width: 50%; </span><span>} </span> <span><span>.heart::after</span> { </span> <span>transform: translateZ(0) rotate(45deg); </span><span>}</span>sisi bulat ditetapkan dengan dua nilai radii untuk mendapatkan lengkung elips dan bukannya bulat, dan oleh itu bentuk jantung yang lebih semula jadi. Kerana panjang sisi segi empat tepat mempunyai nisbah 5/8, radius ellipsis mengira hingga 50%/37.5% untuk melengkapkan hanya sudut yang tidak bertindih.
<span><span>.heart::before, </span></span><span><span>.heart::after</span> { </span> <span>border-radius: 50% 50% 0 0 / 37.5% 37.5% 0 0; </span><span>}</span>Sekarang apa yang tersisa adalah untuk menyesuaikan titik asal transformasi untuk segi empat tepat sehingga titik-titiknya di tengah-tengah kawasan persegi di mana segi empat tepat melakukan pertindihan. Penampilan yang sama dapat dicapai dengan menyesuaikan pengisytiharan kedudukan mutlak dan bukannya menggunakan pendekatan transformasi-asal. Tetapi itu kemudiannya akan merumitkan kod Keyframes kerana ia akan memaksa kita untuk mengawal kedudukan dengan lebih terperinci dan bukannya bergantung pada fungsi skala transformasi untuk melakukan kerja untuk kita.
Titik asal transformasi harus dikira berkaitan dengan sistem koordinat sebelum sebarang transformasi digunakan (kerana transformasi dapat mempengaruhi sistem koordinat, contohnya, fungsi berputar () berputar sistem koordinat bersama-sama dengan elemen yang digunakan ke). Sekali lagi nisbah panjang sisi menentukan kedudukan titik itu: mudah untuk melihat bahawa kedudukan x berada pada 50%, di tengah segi empat tepat, tetapi kedudukan y dikira pada 68.75% ketinggian segi empat diukur dari atas (55*100%/80 = 68.75%). Melangkah dengan pendekatan simetri tertentu juga dibayar di sini juga, kerana kedua-dua segi empat tepat berkongsi kedudukan titik asal transformasi yang sama.
<span><span>.heart::before, </span></span><span><span>.heart::after</span> { </span> <span>transform-origin: 50% 68.75% 0; </span><span>}</span>Dan sekarang kita mempunyai bentuk jantung simetri yang indah. Kami boleh menambah bayang-bayang kotak inset, berbeza untuk setiap segi empat tepat, untuk menjadikannya semua plump dan 3D.
<span><span>.heart::before</span> { </span> <span>box-shadow: -8px -14px 10px 0 black inset; </span><span>} </span> <span><span>.heart::after</span> { </span> <span>box-shadow: -15px 10px 14px 0 black inset; </span><span>}</span>bunyi hati
Untuk memperkenalkan audio ke dalam halaman, kami menggunakan elemen
<span><span><span><audio> id<span>="heartbeat"</span> src<span>="heartbeat.mp3"</span> preload<span>="auto"</span>></audio></span> </span> Your browser does not support the <span><span><span><code>></code></span>audio<span><span></span>></span> element. </span><span><span><span></span>></span></span></span></span>Daripada kawalan, kami menggunakan JavaScript untuk memanipulasi main balik. Contoh ini menggunakan butang untuk memulakan dan menetapkan semula trek, tetapi dengan sedikit lebih banyak kerja yang dapat kita lakukan tanpa butang dan mulakan dan menetapkan semula audio apabila elemen jantung diklik atau berlegar.
Suara kami adalah bunyi degupan jantung yang diulang empat kali dan ia akan berfungsi sebagai bunyi animasi CSS kami akan diikuti.
flex otot
Untuk membuat tanda jantung kita, kita perlu mengubah bentuknya dari hati yang asli, berehat, ke negeri ketika otot ditekuk. Untuk melenturkan hati kita skala sedikit dan mengubah bentuknya dengan radius sempadan.
<span><span>.heart::before, </span></span><span><span>.heart::after</span> { </span> <span>background-color: red; </span> <span>content: ""; </span> <span>height: 80%; </span> <span>left: 25%; </span> <span>position: absolute; </span> <span>top: 2%; </span> <span>transform: translateZ(0) rotate(-45deg); </span> <span>width: 50%; </span><span>} </span> <span><span>.heart::after</span> { </span> <span>transform: translateZ(0) rotate(45deg); </span><span>}</span>Peralihan di antara negeri -negeri berehat dan flexed dan kemudian kembali ke bentuk berehat asal membuat satu denyutan jantung. Peratusan kerangka utama kami secara berkesan mengisytiharkan, bergilir -gilir, gaya berehat dan flexed. Tetapi untuk menjadikannya disegerakkan dengan audio yang kita perlu tahu berapa lama animasi harus dimainkan dan peratusan utama yang digunakan untuk keadaan jantung yang mana. Beberapa perisian audio yang berguna dapat membantu kami menganalisis bunyi dan perhatikan maklumat masa yang kami perlukan untuk kerangka utama kami.
Menganalisis isyarat audio dengan Audacity
Audacity® adalah perisian cross-platform sumber terbuka untuk rakaman dan pengeditan bunyi. Ia mudah digunakan dan walaupun anda tidak mempunyai pengalaman dengan perisian pengeditan audio atau video yang sama, ia tidak akan mengambil banyak usaha untuk mendapatkan maklumat yang anda perlukan.
Buka isyarat audio anda dalam keberanian dan ia secara automatik akan menunjukkan kepada anda bentuk gelombang bunyi. Dalam kebanyakan kes ini akan cukup untuk anda mengenali di mana bahagian -bahagian tertentu dari permulaan dan akhir audio, dengan melihat bentuk isyarat. Jarang sekali kita mendapat isyarat di mana beberapa mod paparan spektrogram lain membantu lebih baik, tetapi dalam hal ini kita dapat beralih antara mod yang berbeza melalui menu lungsur di sebelah spektrogram.
Mengklik pada spektrogram menandakan seketika pada garis masa, dan di bawahnya anda boleh membaca dalam beberapa saat berapa kali ia sepadan. Inilah cara kita mengetahui apabila setiap degupan jantung bermula, berakhir, dan apabila jantung berada dalam keadaan yang ditekuk. Kami menggunakan butang Play untuk memainkan keseluruhan audio atau memilih segmen, dan perhatikan masa yang kita perlukan untuk kerangka kunci animasi.
Dalam kes denyutan jantung kami, kami mempunyai 4 degupan jantung yang berbeza dan mudah untuk mengenalinya dengan melihat bentuk gelombang. Kita perlu ambil perhatian setiap degupan jantung, apabila ia bermula, berakhir, dan apabila ia berada di dalam keadaan flexed. Untuk menjadikan ini lebih mudah, kami menggunakan aplikasi spreadsheet di mana kami perhatikan degupan jantung dan masa mereka dalam beberapa saat.
menterjemahkan masa audio ke dalam masa kerangka utama
Sebaik sahaja kita mempunyai masa dalam beberapa saat, kita menggunakan beberapa matematik untuk menormalkan panjang audio ke notasi panjang 100% yang kita gunakan dalam animasi (berlipat ganda dengan 100 dan dibahagikan dengan jumlah masa audio). Ini adalah bagaimana kita mendapat peratusan kerangka utama serta gaya apa yang harus digunakan untuk kerangka utama tertentu, sama ada jantung harus santai atau ditekuk.
Membaca dari jadual ini kita boleh membuat peratusan utama dan mengisi mereka dengan gaya yang berkaitan dengan masing -masing. Di samping skala hati dan radius sempadan kita juga menukar warna jantung untuk menekankan animasi sedikit lebih. Oleh kerana kita menggunakan Transform untuk skala segi empat tepat jantung, dan setiap segi empat tepat juga mempunyai nilai berputar yang berbeza, kita perlu membuat dua animasi yang berbeza, satu untuk setiap segi empat tepat.
Berikut adalah kod @KeyFrames untuk segi empat tepat kiri (animasi segi empat tepat kanan hanya berbeza dengan nilai orientasi putaran dan kedudukan radius sempadan):
<span><span>.heart::before, </span></span><span><span>.heart::after</span> { </span> <span>background-color: red; </span> <span>content: ""; </span> <span>height: 80%; </span> <span>left: 25%; </span> <span>position: absolute; </span> <span>top: 2%; </span> <span>transform: translateZ(0) rotate(-45deg); </span> <span>width: 50%; </span><span>} </span> <span><span>.heart::after</span> { </span> <span>transform: translateZ(0) rotate(45deg); </span><span>}</span>
Akhirnya kami memberikan animasi yang sepadan dengan segi empat tepat. Kami menetapkan panjang animasi kepada panjang audio jantung, tetapkannya untuk bermain sekali sahaja, dengan fungsi masa linear, dan tanpa kelewatan. Menggunakan fungsi masa selain linear akan merosakkan penyegerakan antara animasi dan audio, jadi sentiasa ingat untuk menggunakan fungsi masa linear apabila menyegerakkan ke sumber luaran.
<span><span>.heart::before, </span></span><span><span>.heart::after</span> { </span> <span>border-radius: 50% 50% 0 0 / 37.5% 37.5% 0 0; </span><span>}</span>
Animasi ditugaskan ke kelas khas yang kami tambahkan ke elemen jantung dengan JavaScript, pada acara yang sama kami mencetuskan permainan audio. Inilah cara kami memastikan animasi dan audio bermula pada masa yang sama dan semua kerja penyegerakan dibayar.
Dan itu sahaja untuk animasi jantung, yang dapat anda lihat dalam demo di bawah.
Lihat animasi pena CSS dengan bunyi: Heartbeat oleh SitePoint (@SitePoint) pada codepen.
lebih banyak animasi bunyi CSS!
lapar untuk lebih banyak barang CSS yang dapat anda dengar serta memerhatikan? Berikut adalah beberapa contoh lagi yang boleh anda ambil dan belajar dari:
Lihat Pen 5A20EF9D5C68ABC42320AC73639F0E39 oleh SITEPOINT (@SitePoint) pada CODEPEN.
Lihat animasi CSS CSS Pen Cuckoo dengan bunyi oleh SitePoint (@SitePoint) pada Codepen.
lihat pen qobqro oleh sitepoint (@sitePoint) pada codepen.
di bawah adalah senarai sumber untuk sumber media yang digunakan dalam artikel ini:
- bunyi degupan jantung (domain awam)
- isyarat persimpangan kereta api (domain awam)
- bunyi jam cuckoo (domain awam)
- imej jam randik (domain awam)
- Masa habis oleh Iwan Gabovitch di bawah lesen CC-BY 3.0
Pemikiran Akhir
Atas ialah kandungan terperinci Menyelaraskan animasi CSS dengan audio html5. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kursor adat dengan CSS adalah hebat, tetapi kita boleh mengambil sesuatu ke peringkat seterusnya dengan JavaScript. Menggunakan JavaScript, kita boleh beralih antara negeri kursor, letakkan teks dinamik dalam kursor, gunakan animasi kompleks, dan gunakan penapis.

Animasi CSS interaktif dengan unsur -unsur yang menghilangkan satu sama lain kelihatan lebih masuk akal pada tahun 2025. Walaupun tidak perlu untuk melaksanakan pong dalam CSS, peningkatan fleksibiliti dan kuasa CSS mengukuhkan kecurigaan Lee '

Petua dan cara untuk menggunakan harta penapis latar belakang CSS ke antara muka pengguna gaya. Anda akan belajar bagaimana untuk meletakkan penapis latar belakang di antara pelbagai elemen, dan mengintegrasikannya dengan kesan grafik CSS yang lain untuk membuat reka bentuk yang rumit.

Nah, ternyata ciri-ciri animasi terbina dalam SVG ' s tidak pernah ditamatkan seperti yang dirancang. Pasti, CSS dan JavaScript lebih mampu membawa beban, tetapi ia baik untuk mengetahui bahawa SMIL tidak mati di dalam air seperti sebelumnya

Yay, let ' s melompat untuk teks-wrap: Pretty Landing dalam Pratonton Teknologi Safari! Tetapi berhati -hatilah bahawa ia ' s berbeza dari bagaimana ia berfungsi dalam pelayar kromium.

Kemas kini trik CSS ini menyoroti kemajuan yang ketara dalam almanak, penampilan podcast baru-baru ini, panduan kaunter CSS baru, dan penambahan beberapa penulis baru yang menyumbang kandungan berharga.

Kebanyakan masa, orang mempamerkan ciri-ciri Tailwind ' Apabila dipamerkan dengan cara ini, @apply tidak menjanjikan sama sekali. Jadi obvio

Menggunakan seperti idiot datang ke ketidakcocokan antara alat yang anda gunakan untuk menggunakan dan ganjaran dalam kerumitan dikurangkan berbanding kerumitan yang ditambah.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Dreamweaver CS6
Alat pembangunan web visual

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan