recherche
Maisoninterface Webtutoriel CSSArticle du débutant : Comment utiliser CSS pour implémenter une animation squelettique simple (partage de code)

Dans l'article précédent "Vous apprendre à utiliser des scripts shell pour implémenter des paramètres rapides de serveur (avec code)", je vous ai présenté comment utiliser des scripts shell pour implémenter des paramètres rapides de serveur. L'article suivant vous présentera comment utiliser CSS pour implémenter une animation squelettique simple. Voyons comment procéder.

Article du débutant : Comment utiliser CSS pour implémenter une animation squelettique simple (partage de code)

1. Contexte

Un jour, le designer est venu me voir et m'a dit : "Cette carte de vœux est juste accrochée là et elle n'a pas l'air bien. Ajoutons un peu d'animation et faisons-la simplement pivoter d'un côté à l'autre. C'est très simple !" , je me suis dit : OK, améliore l'expérience visuelle de l'utilisateur, commençons.

Article du débutant : Comment utiliser CSS pour implémenter une animation squelettique simple (partage de code)

Après dix minutes, non, le balancement gauche et droit est tellement faux, pas comme le véritable effet du vent.

Remarque : La vitesse de l'animation et l'amplitude du swing sont ici accélérées.

.animate-1 {
    animation: swing1 1s ease-in-out infinite;
    transform: rotate(-5deg);
    transform-origin: top center;
}
@keyframes swing1 {
    0% { transform: rotate(-5deg); }
    50% { transform: rotate(5deg);}
    100% { transform: rotate(-5deg);}
}

Article du débutant : Comment utiliser CSS pour implémenter une animation squelettique simple (partage de code)

Réfléchissez calmement, pourquoi cette balançoire n'a pas d'âme. J'ai donc pris la carte de travail et j'ai commencé à la balancer pour voir à quoi ressemblait l'effet de swing dans la réalité. Finalement, je me suis soudain rendu compte : il s'avère que la vraie carte de souhait (identique à la carte de travail) ne se balance pas comme une carte de travail. entier lorsqu'il est stressé, mais il sera divisé en plusieurs parties et oscillera en association selon la position du nœud. Il s'agit en fait d'une simple animation squelettique ! Alors comment y parvenir ?

2. Animation de squelette

Ici, nous prendrons comme exemple cette animation de swing de carte de souhaits, et nous étudierons ensemble comment utiliser le CSS pour y parvenir.

2.1 Séparation des éléments

Pour faire bouger les éléments animés séparément, vous devez d'abord diviser les éléments. La base du fractionnement réside dans les nœuds mentionnés ci-dessus, qui sont ce qu'on appelle les articulations dans l'animation squelettique. Par exemple, cette carte de souhaits a deux articulations, une en haut et une en dessous de la carte, nous pouvons donc la diviser en 3 éléments d'animation :

Article du débutant : Comment utiliser CSS pour implémenter une animation squelettique simple (partage de code)

2.2 Éléments d'épissage

<div>
    <!--元素1-->
    <div class="item-1"></div>
    <!--元素2-->
    <div class="item-2"></div>
    <!--元素3-->
    <div class="item-3"></div>
</div>

Cela semble simple, mais si si vous ne comprenez pas l'animation squelettique, vous tomberez dans un gouffre. Ce qui précède est un mauvais exemple. Afin d'approfondir la compréhension de chacun, nous avons creusé un trou spécialement

2.3 Ajout d'effets de mouvement

Sur la base de ce qui précède, nous pouvons ajouter des effets de mouvement de swing de différentes amplitudes et directions à chaque partie.

<div class="animate-2">
    <!--元素1-->
    <div class="item-1"></div>
    <!--元素2-->
    <div class="item-2"></div>
    <!--元素3-->
    <div class="item-3"></div>
</div>
.animate-2 .item-1 {
    /* 设置margin是为了定位,使其部分重叠在一起 */
    margin-bottom: -8px;
    margin-left: 18px;
    position: relative;
    z-index: 1;
    animation: swing2-1 1s ease-in-out infinite;
    transform: rotate(-3deg);
    transform-origin: top center;
}
.animate-2 .item-2 {
    animation: swing2-2 1s ease-in-out infinite;
    transform: rotate(5deg);
    transform-origin: top center;
}
.animate-2 .item-3 {
    margin-top: -5px;
    margin-left: 17.5px;
    position: relative;
    animation: swing2-3 1s ease-in-out infinite;
    transform: rotate(-5deg);
    transform-origin: top center;
}
@keyframes swing2-1 {
    0% { transform: rotate(-3deg); }
    50% { transform: rotate(3deg);}
    100% { transform: rotate(-3deg);}
}
@keyframes swing2-2 {
    0% { transform: rotate(5deg); }
    50% { transform: rotate(-5deg);}
    100% { transform: rotate(5deg);}
}
@keyframes swing2-3 {
    0% { transform: rotate(-5deg); }
    50% { transform: rotate(5deg);}
    100% { transform: rotate(-5deg);}
}

Terminé ? Jetons un coup d'oeil à l'effet

Article du débutant : Comment utiliser CSS pour implémenter une animation squelettique simple (partage de code)

Oh mon Dieu, qu'est-ce que c'est ! ! ! Il semble que le swing soit plus réaliste que le swing global, avec différents éléments ayant des amplitudes et des directions de swing différentes. Mais c'est déplacé.

En continuant à réfléchir sereinement, le problème réside dans le fait que chaque sous-animation de l'animation squelettique est liée, alors que chaque animation que nous avons conçue ci-dessus est indépendante. Par exemple, lorsque la corde rouge en haut oscille, elle tirera le panneau en dessous, provoquant un changement de position du panneau en dessous. Le panneau ci-dessous joue sa propre animation de balancement tout en changeant de position. Il s'agit d'une animation squelettique !

2.4 Combler le trou - implémenter une animation squelettique à partir de js pour comprendre son principe

Le code source est ici Parce qu'il est sur YouTube, afin d'éviter que certains étudiants ne puissent accéder scientifiquement à Internet et ne puissent pas voir. je vais donc prendre l'action en cours d'exécution suivante comme exemple pour expliquer. Jetons un coup d'œil au processus d'implémentation de js

https://github.com/bit101/CodingMath/tree/master/episode44

  • Selon à l'état initial de la cuisse et à la vitesse de rotation actuelle, calculez la position de la cuisse dans le cadre suivant ;

  • En fonction de la position actuelle de la cuisse et de la vitesse actuelle du mollet, calculez la position du mollet dans le image suivante ;

  • ...boucle infinie...

Article du débutant : Comment utiliser CSS pour implémenter une animation squelettique simple (partage de code)

On voit d'ici que la position du mollet est dépendante. La position de la cuisse évitera le désalignement au dessus de nous. Donc, pour parler franchement, les caractéristiques de l'animation squelettique sont :

Les éléments clés se déplacent avec leurs éléments enfants, et les éléments enfants se déplacent d'eux-mêmes en fonction de cela.

Donc dans l'implémentation js, la connexion est réalisée en calculant d'abord la position de la cuisse, puis en calculant la position du mollet à partir de la position de la cuisse. Comment l'implémenter en CSS ?

2.5 Implémentation CSS pure

Revoyez les points les plus critiques : Les éléments clés se déplacent avec les sous-éléments, et les sous-éléments se déplacent d'eux-mêmes en fonction de cela. , pour réaliser le mouvement des éléments clés et sous-éléments ensemble, en CSS, du moment que les éléments clés enveloppent les sous-éléments ! , c'est la pierre angulaire du CSS pour implémenter l'animation squelettique.

<div class="animate-3">
    <!--运动模块1-->
    <div class="s-1">
        <div class="item-1"></div>
        <!--运动模块2-->
        <div class="s-2">
            <div class="item-2"></div>
            <!--运动模块3-->
            <div class="s-3">
                <div class="item-3"></div>
            </div>
        </div>
    </div>
</div>
rrree

Article du débutant : Comment utiliser CSS pour implémenter une animation squelettique simple (partage de code)

这次终于大功告成了。这里有三个元素,更多元素也是同理的,不断嵌套即可。

3、最终动效演示

细心的同学会发现上面实现的骨骼动画看着也别扭,归根结底是各个元素摆动的方向和幅度没有调节好,这里附上调整完的效果,用心感受:

.animate-4 .s-1 {
    animation: swing4-1 5s ease-in-out infinite;
    transform: rotate(-2deg);
    transform-origin: top center;
}
.animate-4 .s-2 {
    animation: swing4-2 8s ease-in-out infinite;
    transform: rotate3d(0, 1, 0, 20deg);
    transform-origin: top center;
}
.animate-4 .s-3 {
    animation: swing4-3 8s ease-in-out infinite;
    transform: rotate(3deg);
    transform-origin: top center;
}
@keyframes swing4-1 {
    0% { transform: rotate(-2deg); }
    50% { transform: rotate(2deg);}
    100% { transform: rotate(-2deg);}
}
@keyframes swing4-2 {
    0% { transform: rotate3d(0, 1, 0, 20deg); }
    50% { transform: rotate3d(0, 1, 0, -20deg);}
    100% { transform: rotate3d(0, 1, 0, 20deg);}
}
@keyframes swing4-3 {
    0% { transform: rotate(3deg); }
    50% { transform: rotate(-3deg);}
    100% { transform: rotate(3deg);}
}

Article du débutant : Comment utiliser CSS pour implémenter une animation squelettique simple (partage de code)

4、End

纯CSS确实能实现骨骼动画,但仅限于简单的场景。在复杂场景中,例如前端游戏里面的骨骼动画,涉及到的节点比较多,用CSS虽然能实现,但效率不高,所以社区有很多从设计工具直接导出可用的骨骼动画信息,再用js来加载运行的方案,大家感兴趣可以Google一下。

本文主要通过简单的案例来加深大家对骨骼动画的原理性的认识,至于最后大家用CSS还是用JS来实现,就是“杀鸡要不要用牛刀”的问题了。

个人认为,只要屠龙刀在手,用不用已经不重要了。加油,希望大家能在各个方向找到自己的屠龙刀。

推荐学习:CSS视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Mise à jour 'CSS4'Mise à jour 'CSS4'Apr 11, 2025 pm 12:05 PM

Depuis que j'ai sonné pour la première fois sur le truc CSS4¹, il y a eu des tonnes de discussions plus à ce sujet. Je vais rassembler mes pensées préférées des autres ici. Il y a

Les trois types de codeLes trois types de codeApr 11, 2025 pm 12:02 PM

Chaque fois que je commence un nouveau projet, j'organise le code que je regarde en trois types ou catégories si vous le souhaitez. Et je pense que ces types peuvent être appliqués à

HTTPS est facile!HTTPS est facile!Apr 11, 2025 am 11:51 AM

J'ai été coupable de déplorer publiquement la complexité des HTTP. Dans le passé, j'ai acheté des certificats SSL à des fournisseurs tiers et j'ai eu des problèmes

Guide des attributs de données HTMLGuide des attributs de données HTMLApr 11, 2025 am 11:50 AM

Tout ce que vous avez toujours voulu savoir sur les attributs de données dans HTML, CSS et JavaScript.

Comprendre l'immuabilité en JavaScriptComprendre l'immuabilité en JavaScriptApr 11, 2025 am 11:47 AM

Si vous n'avez pas travaillé avec l'immuabilité en JavaScript auparavant, vous pourriez trouver facile de le confondre avec l'attribution d'une variable à une nouvelle valeur ou une réaffectation.

Entrées de formulaire de style personnalisé avec des fonctionnalités CSS modernesEntrées de formulaire de style personnalisé avec des fonctionnalités CSS modernesApr 11, 2025 am 11:45 AM

Il est tout à fait possible de créer des cases à cocher personnalisées, des boutons radio et des interrupteurs à bascule ces jours-ci, tout en restant sémantique et accessible. Nous n'avons même pas besoin d'un

Personnages de note de bas de pagePersonnages de note de bas de pageApr 11, 2025 am 11:34 AM

Il existe des caractères de numéro de sur-ensemble spéciaux qui sont parfois parfaits pour les notes de bas de page. Les voici:

Comment créer un compte à rebours animé avec HTML, CSS et JavaScriptComment créer un compte à rebours animé avec HTML, CSS et JavaScriptApr 11, 2025 am 11:29 AM

Avez-vous déjà eu besoin d'un compte à rebours sur un projet? Pour quelque chose comme ça, il pourrait être naturel d'atteindre un plugin, mais c'est en fait beaucoup plus

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

Dreamweaver Mac

Dreamweaver Mac

Outils de développement Web visuel

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser