Maison >interface Web >tutoriel CSS >Comment puis-je faire pivoter efficacement plusieurs objets dans un cercle en utilisant CSS et jQuery ?
Rotation de plusieurs objets dans un cercle à l'aide de CSS : un guide complet
Dans cet article, nous explorons les défis liés à la rotation de plusieurs objets dans un motif circulaire en utilisant CSS. Nous approfondirons les détails de mise en œuvre et présenterons une solution Jquery robuste capable de gérer n'importe quel nombre d'éléments externes.
Comprendre le mécanisme de rotation
CSS fournit la propriété de transformation, ce qui nous permet d'appliquer diverses transformations aux éléments, y compris la rotation. La fonction rotateZ(angle) fait pivoter l'élément autour de l'axe Z, créant le mouvement circulaire souhaité.
Démo et implémentation
Pour illustrer le concept, nous utiliserons le code HTML et CSS suivant :
<div class="outCircle"> <div class="rotate"> <div class="inner">hello</div> </div> </div>
.outCircle { width: 200px; height: 200px; left: 270px; position: absolute; top: 50px; border-radius: 100px; } .rotate { width: 100%; height: 100%; -webkit-animation: circle 10s infinite linear; } .inner { width: 100px; height: 100px; background: red; border-radius: 50px; position: absolute; left: 0px; top: 0px; background-color: red; display: block; } @-webkit-keyframes circle { from { -webkit-transform: rotateZ(0deg) } to { -webkit-transform: rotateZ(360deg) } }
Ce code fait tourner avec succès un seul objet dans un cercle. Cependant, l'étendre pour faire pivoter plusieurs objets peut être délicat.
Solution Jquery pour la rotation dynamique
La clé pour faire pivoter plusieurs objets est de calculer leurs positions autour du cercle et appliquer les transformations appropriées. La solution Jquery suivante gère ce problème avec élégance :
var radius = 100; var fields = $('.item'), container = $('#container'), width = container.width(), height = container.height(); var angle = 0, step = (2 * Math.PI) / fields.length; fields.each(function() { var x = Math.round(width / 2 + radius * Math.cos(angle) - $(this).width() / 2); var y = Math.round(height / 2 + radius * Math.sin(angle) - $(this).height() / 2); $(this).css({ left: x + 'px', top: y + 'px' }); angle += step; });
body { padding: 2em; } #container { width: 200px; height: 200px; margin: 10px auto; border: 1px solid #000; position: relative; border-radius: 50%; animation: spin 10s linear infinite; } .item { width: 30px; height: 30px; line-height: 30px; text-align: center; border-radius: 50%; position: absolute; background: #f00; animation: spin 10s linear infinite reverse; } @keyframes spin { 100% { transform: rotate(1turn); } }
Principales caractéristiques de la solution :
Conclusion
Bien que la rotation de plusieurs objets dans un cercle à l'aide de CSS puisse être difficile au début, la solution Jquery présentée dans cet article propose une approche robuste et polyvalente. Il permet aux développeurs de créer sans effort des animations circulaires accrocheuses avec seulement quelques lignes de code.
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!