ホームページ > ウェブフロントエンド > CSSチュートリアル > CSS と JavaScript を使用して複数のオブジェクトを円を中心に回転させるにはどうすればよいですか?

CSS と JavaScript を使用して複数のオブジェクトを円を中心に回転させるにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-07 11:46:20
オリジナル
136 人が閲覧しました

How to Rotate Multiple Objects Around a Circle Using CSS and JavaScript?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート