CSS を使用して円の周りで複数のオブジェクトを回転する
複数のオブジェクトが円の周りを回転するアニメーションを作成しようとすると、次のような問題が発生しました。 1 つのオブジェクトだけが正しく回転します。この記事の目的は、この問題を解決して、必要なすべてのオブジェクトが円の周囲をシームレスに回転できるようにするためのガイダンスを提供することです。
既存のコードと実装
提供されたコードには、「outCircle」が含まれています。 " 回転の中心として機能する div があり、その中に入れ子になった「回転」 div にアニメーション化するオブジェクトが含まれています。 CSS3 アニメーションを使用して、「rotate」div は「outCircle」の周りを無限に回転するように構成されています。ただし、「回転」 div 内にオブジェクトを追加しようとすると、望ましくない動作が発生します。
解決策
この問題に対処するには、JavaScript ベースのアプローチがより適しています。複数のオブジェクトの回転を処理する場合:
var radius = 100; // Adjust to place items closer or farther from the center var fields = $('.item'); // Target the objects to be rotated var container = $('#container'); // Parent div encasing the rotating objects var width = container.width(); var height = container.height(); var angle = 0; var step = (2 * Math.PI) / fields.length; // Calculate the angular separation between objects fields.each(function() { // Calculate the coordinates for each object based on its position in the circle 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); if (console) { console.log($(this).text(), x, y); // Display coordinates for debugging } $(this).css({ left: x + 'px', // Set the left position top: y + 'px', // Set the top position }); // Increment the angle based on the spacing between objects angle += step; });
追加考慮事項
さらに、CSS3 を使用してアニメーション動作を構成できます。
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; // Define the animation duration and direction } .item { width: 30px; height: 30px; line-height: 30px; text-align: center; border-radius: 50%; position: absolute; background: #f00; animation: spin 10s linear infinite reverse; // Reverse the animation for each object } @keyframes spin { 100% { transform: rotate(1turn); // Rotate the objects one full turn } }
例
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div>
このアプローチでは、次のことが可能になります。 CSS3 と JavaScript を使用して、任意の数のオブジェクトを円の周りで回転させる、柔軟でスケーラブルなソリューションです。
以上がCSS と JavaScript を使用して複数のオブジェクトを円を中心に回転させるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。