>웹 프론트엔드 >CSS 튜토리얼 >CSS와 JavaScript를 사용하여 원 주위로 여러 개체를 회전하는 방법은 무엇입니까?

CSS와 JavaScript를 사용하여 원 주위로 여러 개체를 회전하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-07 11:46:20132검색

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

CSS를 사용하여 원 주위로 여러 개체 회전

여러 개체가 원을 중심으로 회전하는 애니메이션을 만들려고 할 때 다음과 같은 문제가 발생했습니다. 단 하나의 개체만 올바르게 회전합니다. 이 문서의 목적은 원하는 모든 개체가 원을 중심으로 원활하게 회전하도록 이 문제를 해결하기 위한 지침을 제공하는 것입니다.

기존 코드 및 구현

제공된 코드에는 "outCircle"이 포함됩니다. " 회전 중심 역할을 하는 div가 있고 그 안에 중첩된 "회전" div에는 애니메이션을 적용할 개체가 포함되어 있습니다. CSS3 애니메이션을 사용하여 "회전" 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.