HTML制作一个太阳、地球、月球之间的绕转动画

大家好,今天制作一个太阳、地球、月球之间的绕转动画!

先看具体效果:
在这里插入图片描述

要制作一个太阳、地球、月球之间的绕转动画,我们需要结合HTML、CSS和JavaScript。由于CSS动画和JavaScript动画各有优缺点,这里我将给出一个使用CSS关键帧动画(@keyframes)的例子,来模拟太阳、地球和月球的绕转。

首先,我们需要在HTML中定义太阳、地球和月球的元素:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>太阳系绕转动画</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>

<div class="solar-system">
  <div class="sun"></div>
  <div class="earth-orbit">
    <div class="earth">
      <div class="moon-orbit">
        <div class="moon"></div>
      </div>
    </div>
  </div>
</div>

</body>
</html>

接下来,在CSS中定义样式和动画:

body {  
  margin: 0;  
  display: flex;  
  justify-content: center;  
  align-items: center;  
  height: 100vh;  
  background: radial-gradient(circle, #fff, #000); /* 渐变背景 */  
  overflow: hidden;  
}  


/* styles.css */  
.solar-system {  
  position: relative;  
  width: 400px;  
  height: 400px;  
  margin: 0 auto;  
}  
  
.sun {  
  position: absolute;  
  width: 100px;  
  height: 100px;  
  background: yellow;  
  border-radius: 50%;  
  top: 50%;  
  left: 50%;  
  transform: translate(-50%, -50%);  
  box-shadow: 0 0 50px yellow, 0 0 100px yellow, 0 0 150px yellow; /* 增加光影效果 */  
}  
  
.earth-orbit {  
  position: absolute;  
  top: 50%;  
  left: 50%;  
  width: 300px;  
  height: 300px;  
  border: 1px solid #ccc;  
  border-radius: 50%;  
  animation: earthOrbit 10s linear infinite;  
  transform-origin: 50% 200px; /* 这里的值取决于你的设计,这里假设太阳中心到地球轨道的距离为200px */  
  border: none; /* 去掉边框,用阴影代替 */  
  box-shadow: 0 0 50px rgba(0, 0, 255, 0.5); /* 轨道的阴影效果 */  
  animation: earthOrbit 12s cubic-bezier(0.55, 0.085, 0.68, 0.53) infinite; /* 更复杂的动画缓动函数 */
}  
  
@keyframes earthOrbit {  
  from {  
    transform: rotate(0deg) translateX(-50%) translateY(-50%);  
  }  
  to {  
    transform: rotate(360deg) translateX(-50%) translateY(-50%);  
  }  
}  
  
.earth {  
  position: absolute;  
  top: 50%;  
  left: 50%;  
  width: 50px;  
  height: 50px;  
  background: blue;  
  border-radius: 50%;  
  transform: translate(-50%, -50%);  
  animation: earthRotation 10s linear infinite;  
  box-shadow: 0 0 10px rgba(0, 0, 255, 0.8); /* 地球的阴影效果 */
}  
  
@keyframes earthRotation {  
  from {  
    transform: translate(-50%, -50%) rotate(0deg);  
  }  
  to {  
    transform: translate(-50%, -50%) rotate(360deg);  
  }  
}  
  
.moon-orbit {  
  position: absolute;  
  top: 50%;  
  left: 50%;  
  width: 70px; /* 根据实际情况调整月球轨道大小 */  
  height: 70px;  
  border: 1px solid #999;  
  border-radius: 50%;  
  animation: moonOrbit 5s linear infinite;  
  transform-origin: 50% 100%; /* 这里的值取决于你的设计,这里假设地球中心到月球轨道的距离为月球轨道半径 */  
  box-shadow: 0 0 20px rgba(128, 128, 128, 0.5); /* 月球轨道的阴影效果 */  
  animation: moonOrbit 7s linear infinite; /* 月球轨道的动画时间可以不同于地球 */ 
}  
  
@keyframes moonOrbit {  
  from {  
    transform: rotate(0deg) translateX(-50%) translateY(-50%);  
  }  
  to {  
    transform: rotate(360deg) translateX(-50%) translateY(-50%);  
  }  
}  
  
.moon {  
  position: absolute;  
  top: 50%;  
  left: 50%;  
  width: 20px;  
  height: 20px;  
  background: gray;  
  border-radius: 50%;  
  transform: translate(-50%, -50%);  
   box-shadow: 0 0 5px rgba(128, 128, 128, 0.8); /* 月球的阴影效果 */  
}

这个例子中,.earth-orbit.moon-orbit 分别代表地球和月球的轨道,它们分别围绕

注意事项

  1. 渐变背景:使用radial-gradient为页面添加了从白色到黑色的渐变背景,使整体效果更加炫酷。
  2. 光影效果:通过box-shadow属性为太阳、地球和月球添加了光影效果,使它们看起来更加立体和真实。
  3. 复杂的轨道动画:可以调整动画的缓动函数(如cubic-bezier)来创建更复杂的轨道动画效果。也可以添加更多的关键帧来模拟椭圆轨道或其他复杂轨迹。
  4. 动画时间:地球和月球的轨道动画时间可以不同,以模拟它们实际绕转速度的差异。
  5. 其他行星和卫星:可以类似地添加其他行星和卫星的轨道和动画效果,以构建更完整的太阳系模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/701002.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LCD电子广告牌课程设计

概述 1.1课程设计简介 亮丽实用的广告牌可以给我们的生活添加光彩、可以给店铺招揽生意。传统的广告牌都是固定的汉字&#xff0c;并且时间长了会掉色&#xff0c;使汉字模糊难认&#xff0c;这就给我的生活带来很多的不便。尤其到了晚上传统广告牌就会失去其该有的作用。所以在…

空山新雨后-故事和场景搭建(一)

1、关于故事 1.故事的灵感 2.故事的表线 3.故事的里线 4.故事的参考图 5.故事的资源 6.关于音乐,听了100多首音乐选出来的 2、场景搭建 1.放入HDRI,放入PostProcessVolumn,将PostProcessVolumn设置为无限范围,将曝光补偿、Min EUV、Max EUV都设置为0,

SpringBoot Vue Bootstrap 旅游管理系统

SpringBoot Vue 旅游管理系统源码&#xff0c;附带环境安装&#xff0c;运行说明 源码地址 开发环境 jdk1.8,mysql8,nodejs16,navicat,idea 使用技术springboot mybatis vue bootstrap 部分功能截图预览

投稿要求的Cover Letter该怎么写?附全文模版+例句

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 投稿时提交的Cover letter&#xff0c;是作者写给期刊编辑的信&#xff0c;编辑在看完你的cover letter之后&#xff0c;再决定是否继续看全文。Cover Letter不会随正文一起发…

零基础直接上手java跨平台桌面程序,使用javafx(五)TableView显示excel表

我们在窗口的中间加上TableVie&#xff1a; 在hello-view.fxml的文本中&#xff0c;要增加一些代码。在TableView定义中加上fx:id"TableView1"&#xff0c;这样java代码才方便访问&#xff0c;在java代码中要加上FXML private TableView TableView1;表示定义TableVie…

JDBC开发之四大核心API:DriverManager Connection Statement ResultSet

DriverManager 方法都是静态的 注册驱动 在Mysql5之后我们就不用注册驱动了 在jar包里已经写好了 读取文件 第二个方法 如果连接的是主机mysql并且端口是默认的3306 则可以简化书写 代码书写 import java.sql.Connection; import java.sql.DriverManager; import java.sql.S…

应急管理大泽动力6寸柴油水泵的使用方法

6寸柴油水泵的使用方法可以按照以下步骤进行&#xff0c;以确保操作的安全&#xff1a; 一、准备阶段 检查设备&#xff1a;确保6寸柴油水泵及其配件完好无损&#xff0c;特别是检查水泵的密封性能&#xff0c;确保无泄漏。 准备油料&#xff1a;根据参考文章1&#xff0c;为…

解决cmd命令出现乱码问题

方法1&#xff1a;修改CMD或PS显示编码(临时且不一定生效) CMD的默认编码为gdk&#xff08;简体中文&#xff09;&#xff0c;需修改为utf-8&#xff08;万国码&#xff09; 在命令行窗口输入 CHCP 65001窗口关闭后又会恢复成默认的gdk编码形式 方法2&#xff1a;更改系统设…

注意力机制篇 | YOLOv8改进之在C2f模块引入SpatialGroupEnhance注意力模块

前言:Hello大家好,我是小哥谈。这篇文章介绍了一种轻量级的神经网络模块SGE,它可以调整卷积神经网络中每个子特征的重要性,从而提高图像识别任务的性能。SGE通过生成注意力因子来调整每个子特征的强度,有效抑制噪声。与流行的CNN主干网络集成时,SGE可以显著提高图像识别性…

ConstraintLayout遇到的坑

背景 为了降低app的卡顿率&#xff0c;项目做了一次优化&#xff0c;将首页的的滑动控件viewPager改成了viewPager2&#xff0c;前者是一次性加载所有的布局文件&#xff0c;后者只会加载目标页面的布局文件&#xff0c;减少了计算和绘制的时间。在开发完后&#xff0c;发现了…

Vue 路由传递参数 query、params

1、to的对象写法,绑定参数 <template> 2 <ul> 3 <li v-for"m in messlist" :key"m.id"> 4 <router-link :to"{ //使用params时&#xff0c;这个路径必须用name及别名......name: xiangqing, path: /bbb/message/deta…

【GreenHills】解决GHS对于“//”注释符号进行报错的问题

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决GHS对于使用“//”进行注释内容进行报错的问题 2、 问题场景 在代码中经常使用“//”进行内容注释。但是&#xff0c;在GHS中发现所有的注释信息都被显示了报错。报错信息如下图2-1。 图2-1 3、软硬件环境 1&a…

关于LayUI弹出层请求一次其他网页后无法再次点击按钮问题

问题描述 使用layer弹出层去请求另一个页面&#xff0c;关闭弹窗后本页面按钮无法点击也不报错,如下面弹窗代码 layer.open({type: 1,area: [500px, 400px],title: 编辑信息,shade: 0.6,shadeClose: true,maxmin: false,anim: 0,success: function (layero, index) {$.ajax({u…

【网络编程开发】7.TCP可靠传输的原理

7.TCP可靠传输的原理 TCP实现可靠传输的原理主要基于序列号和确认应答、超时重传、滑动窗口、连接管理机制以及拥塞控制等多重机制。 TCP&#xff08;Transmission Control Protocol&#xff09;&#xff0c;即传输控制协议&#xff0c;是网络通信中的一种重要协议&#xff0…

守护云端数据安全—安当透明加密TDE解决方案

国家安全部官微6月5日消息&#xff0c;云存储是一种新兴网络存储技术。近年来&#xff0c;随着网络“云”功能不断普及&#xff0c;“云端”数据也成为了境外间谍情报机关关注的重点&#xff0c;他们通过网络攻击、植入木马等各种手段&#xff0c;试图窃取我敏感信息和涉密数据…

将你的IOS升级到18

一、登录到苹果开发者网站 Apple Developer 二、选择IOS 18 三、选择Download 四、登录appleid 五、显示下载页面 六、登录你的手机

一款优秀的下载和共享工具

一、简介 1、它以舒适和快速的方式下载Internet文件&#xff0c;同时支持断点续传和嗅探视频音频的功能。 它具有站点抓取、批量下载队列和计划任务下载等功能&#xff0c;可以接管所有浏览器的下载任务&#xff0c;包括Edge&#xff0c;Firefox和Chrome等主流浏览器。 对于用…

螺栓拧紧力矩标准

据德国VOITH提供Nm换算所得 螺栓扭矩表 (单位&#xff1a;Nm、Kgm) Nm0.101972mKg M6~M24螺钉或螺母的拧紧力矩操作者参考 ★对于设计图纸有明确力矩要求的;应按图纸要求执行… 套管螺母紧固力矩Q/STB B07833-1998 材料 HPb63-3Y2 直通式压注油杯 Q/STB B07020-1998螺纹M6、…

【测试开发】

1.一个优秀的软件测试人员具备的素质 综合能力 沟通能力快速学习的能力开发能力文字能力 掌握自动化测试技术 掌握自动化测试技术&#xff0c;可以把你从大量重复性劳动中解脱出来&#xff0c;这样可以把更多的经历都花在更多类型的测试上 优秀的测试用例设计能力 测试用例设计…

基于springboot实现高校专业实习管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现高校专业实习管理系统的设计演示 摘要 随着国内市场经济这几十年来的蓬勃发展&#xff0c;突然遇到了从国外传入国内的互联网技术&#xff0c;互联网产业从开始的群众不信任&#xff0c;到现在的离不开&#xff0c;中间经历了很多挫折。本次开发的高校专业实…