Heim > Web-Frontend > CSS-Tutorial > Wie drehe ich mehrere Objekte mithilfe von CSS und JavaScript um einen Kreis?

Wie drehe ich mehrere Objekte mithilfe von CSS und JavaScript um einen Kreis?

Patricia Arquette
Freigeben: 2024-12-07 11:46:20
Original
141 Leute haben es durchsucht

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

Mehrere Objekte mit CSS um einen Kreis drehen

Bei dem Versuch, eine Animation zu erstellen, bei der sich mehrere Objekte um einen Kreis drehen, ist Folgendes aufgetreten Nur ein Objekt dreht sich richtig. Dieser Artikel soll Anleitungen zur Lösung dieses Problems geben, um sicherzustellen, dass sich alle gewünschten Objekte nahtlos um den Kreis drehen.

Vorhandener Code und Implementierung

Der bereitgestellte Code beinhaltet einen „outCircle“. "-Div, das als Rotationszentrum fungiert und in dem ein verschachteltes „Rotate“-Div die zu animierenden Objekte enthält. Mithilfe der CSS3-Animation wird das Div „rotate“ so konfiguriert, dass es sich unbegrenzt um den „outCircle“ dreht. Versuche, zusätzliche Objekte innerhalb des „rotate“-Divs hinzuzufügen, führen jedoch zu unerwünschtem Verhalten.

Lösung

Um dieses Problem zu beheben, ist ein JavaScript-basierter Ansatz besser geeignet zur Handhabung mehrerer Objektrotationen:

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;
});
Nach dem Login kopieren

Zusätzlich Überlegungen

Zusätzlich kann CSS3 verwendet werden, um das Animationsverhalten zu konfigurieren:

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
  }
}
Nach dem Login kopieren

Beispiel

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
Nach dem Login kopieren

Dieser Ansatz bietet eine flexible und skalierbare Lösung zum Drehen einer beliebigen Anzahl von Objekten um einen Kreis mithilfe von CSS3 und JavaScript.

Das obige ist der detaillierte Inhalt vonWie drehe ich mehrere Objekte mithilfe von CSS und JavaScript um einen Kreis?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage