> 웹 프론트엔드 > CSS 튜토리얼 > 대화형 태양계 시뮬레이션 구축: 단계별 가이드

대화형 태양계 시뮬레이션 구축: 단계별 가이드

Linda Hamilton
풀어 주다: 2024-11-27 06:14:14
원래의
187명이 탐색했습니다.

Building an Interactive Solar System Simulation: A Step-by-Step Guide

시각적으로 매력적이고 대화형인 프로젝트를 만드는 것은 프런트엔드 개발에서 가장 보람 있는 측면 중 하나입니다. 오늘은 역동적인 천체와 정보 패널을 갖춘 완전히 애니메이션화된 대화형 태양계 시뮬레이션을 구축하는 과정을 안내해 드리겠습니다. https://codepen.io/HanGPIIIErr/pen/MWNNNEe에서 호스팅되는 이 프로젝트는 만드는 것이 재미있을 뿐만 아니라 흥미로운 JavaScript 로직과 CSS 애니메이션으로 가득 차 있습니다.

이 개발자 블로그가 끝나면 자신만의 대화형 세계를 만드는 데 필요한 모든 도구와 영감을 얻게 될 것입니다. 또는 이 프로젝트를 기반으로 더 많은 기능을 추가할 수도 있습니다.

태양계 시뮬레이션 개요

이 프로젝트의 특징:

  • 동적 애니메이션: 행성은 태양 주위를 공전하고, 위성은 행성 주위를 회전하며, 혜성은 유동적인 애니메이션으로 캔버스를 가로지릅니다.
  • 상호작용: 클릭 가능한 개체(행성, 위성, 소행성)는 각 천체에 대한 사실이 포함된 정보 패널을 표시합니다.
  • 반응형 제어: 원활한 경험을 위해 키보드 단축키를 사용하여 시스템을 확대/축소하고 탐색합니다.
  • 동적 개체 생성: 혜성, 위성, 소행성이 무작위로 생성되어 시뮬레이션이 살아있는 것처럼 느껴집니다.

사용된 기술

  • HTML: 태양계 및 모달 구조화용.
  • CSS: 애니메이션, 행성 스타일 및 정보 패널의 세련된 UI에 적합합니다.
  • JavaScript: 상호작용, 동적 객체 생성 및 반응형 제어용.

1단계: HTML 구조 구축

태양계의 기본은 빛나는 태양을 중심으로 하는 일련의 동심 궤도입니다. 각 행성에는 자체 궤도가 있으며 동적 개체(위성, 혜성, 소행성)는 JavaScript를 통해 동적으로 추가됩니다.

핵심 구조는 다음과 같습니다.

<div>



<p>Each planet has a data-info attribute containing its description. When clicked, this data populates the informational panel, which appears dynamically.</p>

<p>Step 2: Adding CSS Animations</p>

<p>CSS brings the planets and orbits to life. Each orbit rotates smoothly using the @keyframes rule. Here's how we created the animations:</p>

<p>Orbit Animation<br>
</p>

<pre class="brush:php;toolbar:false">.orbit {
  position: absolute;
  border: 1px dashed rgba(255, 255, 255, 0.3);
  border-radius: 50%;
  animation: rotate infinite linear;
}

@keyframes rotate {
  100% {
    transform: rotate(360deg);
  }
}
로그인 후 복사

플래닛 애니메이션

.planet {
  position: absolute;
  top: 0;
  left: 50%;
  transform: translate(-50%, -50%);
  background: #4caf50; /* Earth color */
  border-radius: 50%;
  animation: planet-spin infinite linear;
}

@keyframes planet-spin {
  0% {
    transform: rotate(0deg) translateX(50px);
  }
  100% {
    transform: rotate(360deg) translateX(50px);
  }
}

로그인 후 복사
로그인 후 복사

이 애니메이션은 행성이 태양 주위를 회전하는 듯한 착각을 불러일으킵니다. 각 행성의 크기와 궤도 속도는 상대적 특성을 반영하여 개별적으로 정의됩니다.

3단계: JavaScript로 상호작용 추가

동적 객체 생성

소행성, 위성, 혜성은 동적으로 생성됩니다. 소행성을 만드는 방법은 다음과 같습니다.

function createAsteroid() {
  const asteroid = document.createElement('div');
  asteroid.classList.add('asteroid');
  asteroid.setAttribute('data-info', 'Asteroid: Rocky celestial object.');
  space.appendChild(asteroid);

  asteroid.addEventListener('click', () => {
    showInfo(asteroid.getAttribute('data-info'));
  });

  setTimeout(() => asteroid.remove(), 5000); // Remove after 5 seconds
}
로그인 후 복사

createAsteroid 함수는 DOM에 새 소행성을 동적으로 추가하고 속성을 설정하며 상호작용을 위해 클릭 리스너를 연결합니다. 이 함수는 setInterval을 사용하여 주기적으로 호출됩니다.

정보패널

천체 개체를 클릭하면 해당 데이터 정보 속성이 정보 패널을 채웁니다.

function showInfo(text) {
  infoText.textContent = text;
  infoPanel.style.display = 'block';
}
로그인 후 복사

패널은 동적으로 나타나며 "닫기" 버튼을 눌러 닫을 수 있습니다.

4단계: 키보드 탐색 추가

시뮬레이션을 더욱 흥미롭게 만들기 위해 확대/축소 및 탐색 컨트롤을 추가했습니다.

<div>



<p>Each planet has a data-info attribute containing its description. When clicked, this data populates the informational panel, which appears dynamically.</p>

<p>Step 2: Adding CSS Animations</p>

<p>CSS brings the planets and orbits to life. Each orbit rotates smoothly using the @keyframes rule. Here's how we created the animations:</p>

<p>Orbit Animation<br>
</p>

<pre class="brush:php;toolbar:false">.orbit {
  position: absolute;
  border: 1px dashed rgba(255, 255, 255, 0.3);
  border-radius: 50%;
  animation: rotate infinite linear;
}

@keyframes rotate {
  100% {
    transform: rotate(360deg);
  }
}
로그인 후 복사

이를 통해 사용자는 태양계를 동적으로 탐색할 수 있습니다.

도전과 교훈

.planet {
  position: absolute;
  top: 0;
  left: 50%;
  transform: translate(-50%, -50%);
  background: #4caf50; /* Earth color */
  border-radius: 50%;
  animation: planet-spin infinite linear;
}

@keyframes planet-spin {
  0% {
    transform: rotate(0deg) translateX(50px);
  }
  100% {
    transform: rotate(360deg) translateX(50px);
  }
}

로그인 후 복사
로그인 후 복사

직접 시도해 보세요!

CodePen에서 전체 프로젝트를 확인하세요: https://codepen.io/HanGPIIIErr/pen/MWNNNEe

원하는 대로 포크하여 나만의 천체나 기능을 추가해 보세요. 블랙홀을 시뮬레이션하거나 별자리를 추가하고 싶으십니까? 가능성은 무궁무진합니다!

결론: 가능성의 우주

이 태양계 시뮬레이션은 HTML, CSS, JavaScript로 무엇이 가능한지 간략하게 보여줍니다. 초보자이든 노련한 개발자이든 이와 같은 프로젝트는 기술을 연마하는 동시에 창의력을 발휘할 수 있는 환상적인 방법입니다.

이 프로젝트가 마음에 드셨다면, 더 많은 프로젝트가 여러분을 기다리고 있습니다! 장대한 전투, 미니 게임, 활발한 게이머와 개발자 커뮤니티를 즐길 수 있는 Gladiators Battle에 참여해 보세요.

? 더 알아보기:

웹사이트: https://gladiatorsbattle.com/
X: https://x.com/GladiatorsBT
링크드인: https://www.linkedin.com/in/pierre-romain-lopez/
디스코드: https://discord.gg/YBNF7KjGwx
읽어주셔서 감사합니다. 즐거운 코딩 되세요! ?

위 내용은 대화형 태양계 시뮬레이션 구축: 단계별 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿