Comment j'ai créé des animations qui changent l'humeur en utilisant des masques CSS

Vous vous souvenez des dessins animés que nous regardions quand nous étions enfants? À cette époque, ils étaient la personnification de l'animation. Désormais, l'animation ne se limite pas aux dessins animés, nous la rencontrons presque tous les jours, en vérifiant le téléphone ou en utilisant n'importe quel appareil doté d'un écran.

Aujourd'hui, l'animation est utilisée non seulement pour attirer l'attention, mais aussi pour améliorer l'interaction des utilisateurs, faciliter la navigation. Dans toute bonne conception, l'animation est ajoutée de telle manière qu'elle se combine avec le concept global, créant ainsi une interface utilisateur pratique.



Dans cet article, nous allons créer une animation simple du visage avec différentes expressions, et dans le processus, nous en apprendrons un peu plus sur CSS.

Commençons


Nous utiliserons la technique CSS, qui est rarement utilisée par les développeurs Web, mais à laquelle les concepteurs ont souvent recours. Cela s'appelle le masquage.

Qu'est-ce qui vous vient à l'esprit lorsque vous entendez les mots «masque»? Vous avez probablement imaginé quelque chose qui obscurcit l'essence. C'est tout ce que nous devons savoir.

Attendez - mais l'article concerne l'écriture et l'utilisation d'animations CSS ... Pas de panique! D'accord!

Créer un masque de base


Supposons que nous ayons une balise div avec un background: green; et cela ressemble à ceci:



Il existe également un fichier face.svg :



Si nous appliquons la propriété CSS mask-image: url (face.svg); à la balise div , vous serez étonné de voir le résultat:



Vous pourriez penser que c'est étrange. L'image face.svg a été placée au-dessus du div , mais a pris une couleur d'arrière-plan. Cela est contraire à nos attentes. Cela se produit en raison de la propriété mask-type , qui rend la partie opaque de svg transparente. Ainsi, la couleur d'arrière-plan devient visible.

N'allons pas en profondeur. N'oubliez pas que vous pouvez utiliser la background-color d' background-color pour modifier la couleur du masque. Si vous connaissez les différentes utilisations de la background-color d' background-color , vous pouvez également appliquer des dégradés et écrire un dégradé simple qui remplit le centre de rouge et étale radialement le noir sur les bords. Le code ressemblera à ceci:

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

Le résultat sera comme ceci:



Ajout d'animation


Ajoutez maintenant une animation à cette face vide. Pour ce faire, utilisez expression.svg , que vous voyez dans l'image ci-dessous. Par souci de simplicité, j'ai créé tous les fichiers svg de la même largeur et hauteur, donc je n'ai pas à aligner les faces et les expressions manuellement.



Maintenant, mask-image a une option intéressante qui vous permet d'utiliser plusieurs images comme masques. Par conséquent, nous pouvons le faire: mask-image: url (face.svg), url (expression.svg); . Voici ce qui s'est passé:



L'une des propriétés les plus importantes des masques CSS est la mask-position , en raison de laquelle le masque est situé dans le coin supérieur gauche par rapport à l'élément parent. Et je peux organiser plusieurs masques en utilisant la propriété mask-position tout comme mask-image . Pour rendre un visage triste, utilisez quelque chose comme ceci: mask-position: 0 0, 0 12px; . Voici ce qui s'est passé.



La première position est 0 0 pour face.svg , et la seconde 0 12px est pour expression.svg . Cela a conduit à un transfert de 12px et a donné au visage l'expression nécessaire.

Application de fonctionnalités


Animons maintenant ces expressions en survol. Le code complet que nous obtenons après avoir appliqué la pseudo-classe de vol stationnaire sera comme ceci:

 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; } 

Après avoir joué un peu plus avec les propriétés CSS, nous pouvons le faire:



C'est l'une des méthodes que vous pouvez utiliser pour créer les animations très excitantes que nous rencontrons presque quotidiennement.

Un point important


Le masquage peut ne pas fonctionner dans tous les navigateurs. Pour le faire fonctionner dans tous les navigateurs, ajoutez simplement des balises de navigateur spéciales telles que -webkit- , -moz- et -moz- .

Vous pouvez voir le code complet sur github et codepen . Je vous remercie! J'espère que cela a été utile.


Jetez un œil à VPS.today , un site pour trouver des serveurs virtuels. 1500 tarifs de 130 hébergeurs, une interface pratique et un grand nombre de critères pour trouver le meilleur serveur virtuel.

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


All Articles