Bagaimana saya membuat animasi yang mengubah suasana hati menggunakan topeng CSS

Ingat kartun yang kami tonton sewaktu kecil? Pada waktu itu mereka adalah personifikasi animasi. Sekarang animasi bukan hanya kartun, kami bertemu hampir setiap hari, memeriksa telepon atau menggunakan perangkat apa pun yang memiliki layar.

Hari ini, animasi digunakan tidak hanya untuk menarik perhatian, tetapi juga untuk meningkatkan interaksi pengguna, memfasilitasi navigasi. Dalam desain yang bagus, animasi ditambahkan sedemikian rupa sehingga digabungkan dengan konsep keseluruhan, sehingga menciptakan antarmuka pengguna yang nyaman.



Pada artikel ini, kita akan membuat animasi wajah yang sederhana dengan ekspresi yang berbeda, dan dalam prosesnya kita akan belajar sedikit tentang CSS.

Mari kita mulai


Kami akan menggunakan teknik CSS, yang jarang digunakan oleh pengembang web, tetapi sering menggunakan perancang. Ini disebut masking.

Apa yang terlintas dalam pikiran ketika Anda mendengar kata "topeng"? Anda mungkin membayangkan sesuatu yang mengaburkan esensi. Hanya itu yang perlu kita ketahui.

Tunggu - tetapi artikelnya adalah tentang menulis dan menggunakan animasi CSS ... Jangan panik! Baiklah!

Buat topeng dasar


Misalkan kita memiliki tag div dengan background: green; dan terlihat seperti ini:



Ada juga file face.svg :



Jika kita menerapkan properti mask-image: url (face.svg); CSS mask-image: url (face.svg); ke tag div , maka Anda akan kagum melihat hasilnya:



Anda mungkin berpikir ini aneh. Gambar face.svg ditempatkan di atas div , tetapi mengambil warna latar belakang. Ini bertentangan dengan harapan kami. Ini terjadi karena properti mask-type , yang membuat bagian buram dari svg transparan. Dengan demikian, warna latar belakang menjadi terlihat.

Jangan sampai terlalu dalam. Hanya perlu diingat bahwa Anda dapat menggunakan background-color untuk mengubah warna topeng. Jika Anda terbiasa dengan berbagai penggunaan background-color , Anda juga dapat menerapkan gradien dan menulis gradien sederhana yang mengisi bagian tengah dengan warna merah dan hitam yang menyebar secara radial di sekeliling tepinya. Kode akan terlihat seperti ini:

 background-image: -webkit-radial-gradient( hsla(0, 100%, 50%, .7), hsla(0, 100%, 20%, .8), hsla(0, 100%, 10%, 1)); 

Hasilnya akan seperti ini:



Menambahkan Animasi


Sekarang tambahkan animasi ke wajah kosong ini. Untuk melakukan ini, gunakan expression.svg , yang Anda lihat pada gambar di bawah ini. Untuk mempermudah, saya membuat semua file svg dengan lebar dan tinggi yang sama, jadi saya tidak perlu menyelaraskan wajah dan ekspresi secara manual.



Sekarang mask-image memiliki opsi keren yang memungkinkan Anda menggunakan banyak gambar sebagai topeng. Oleh karena itu, kita dapat melakukan ini: mask-image: url (face.svg), url (expression.svg); . Inilah yang terjadi:



Salah satu properti paling penting dari topeng CSS adalah mask-position , karena topeng yang terletak di sudut kiri atas relatif terhadap elemen induk. Dan saya dapat mengatur beberapa topeng menggunakan properti mask-position mask-image seperti mask-image . Untuk membuat wajah sedih, gunakan sesuatu seperti ini: mask-position: 0 0, 0 12px; . Inilah yang terjadi.



Posisi pertama adalah 0 0 untuk face.svg , dan face.svg kedua untuk expression.svg . Ini menyebabkan transfer 12px dan memberikan ekspresi yang diperlukan pada wajah.

Menerapkan Fungsi


Sekarang mari kita hidupkan ekspresi ini di kursor. Kode lengkap yang kita dapatkan setelah menerapkan kelas hse pseudo akan seperti ini:

 i { background-image: -webkit-radial-gradient(hsla(0, 100%, 50%, .7), hsla(0, 100%, 20%, .8) 60%, hsla(0, 100%, 10%, 1)); mask-image: url('face.svg'), url('expression.svg'); mask-position: 0 0, 0 12px; /* To make the sad expression */ transition: mask-position .5s ease-out; } i:hover { background-image: -webkit-radial-gradient(hsla(120, 100%, 50%, .7), hsla(120, 100%, 20%, .8) 60%, hsla(120, 100%, 10%, 1)); mask-position: 0 0, 0 0; /* To make the happy expression */ transition: mask-position .1s linear; } 

Setelah bermain sedikit lebih banyak dengan properti CSS, kita dapat melakukan ini:



Ini adalah salah satu metode yang dapat Anda gunakan untuk membuat animasi yang sangat menarik yang kami temui hampir setiap hari.

Satu poin penting


Masking mungkin tidak berfungsi di semua browser. Untuk membuatnya bekerja di semua browser, cukup tambahkan tag browser khusus seperti -webkit- , -moz- dan -0- .

Anda dapat melihat kode lengkapnya di github dan codepen . Terima kasih Semoga bermanfaat.


Lihatlah VPS.today , situs untuk mencari server virtual. 1500 tarif dari 130 host, antarmuka yang nyaman dan sejumlah besar kriteria untuk menemukan server virtual terbaik.

Source: https://habr.com/ru/post/id428666/


All Articles