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

news2025/6/25 16:56:18

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

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

要制作一个太阳、地球、月球之间的绕转动画,我们需要结合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. 其他行星和卫星:可以类似地添加其他行星和卫星的轨道和动画效果,以构建更完整的太阳系模型。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【前端速通系列|第一篇】ES6核心语法

文章目录 1.ES6简介2.let和const3.解构4.链判断5.参数默认值6.箭头函数7.模板字符串8.Promise9.Async函数10.Await关键字11.模块化 1.ES6简介 ES6 是 ECMAScript 2015 的缩写&#xff0c;是 ECMAScript 语言标准的第6个版本。ECMAScript 是 JavaScript 语言的国际标准化组织制…

如何在3天内开发一个鸿蒙app

华为鸿蒙操作系统&#xff08;HarmonyOS&#xff09;自2.0版本正式上线以来&#xff0c;在短时间内就部署超过了2亿台设备&#xff0c;纵观全球操作系统的发展史&#xff0c;也是十分罕见的。与其他手机操作系统不同&#xff0c;HarmonyOS自诞生之日起&#xff0c;就是一款面向…

【vue】终端 常用代码 和其他注意

一、安装 以下全拿 qrcode.vue 举例 1. 搜版本 例子&#xff1a;搜 qrcode.vue的版本代码&#xff1a; npm view qrcode.vue versions 2.卸载 代码&#xff1a; npm uninstall qrcode.vue 3.安装 带版本 例子&#xff1a;安装 1.7.0 版本代码&#xff1a; npm i qrcode…

GaussDB技术解读——GaussDB架构介绍(三)

目录 9 智能关键技术方案 智能关键技术一&#xff1a;自治运维系统 智能关键技术二&#xff1a;库内AI引擎 智能关键技术三&#xff1a;智能优化器 10 驱动接口关键技术方案 GaussDB架构介绍&#xff08;二&#xff09;从数据持久化存取层(DataNode)关键技术方案、全局事…

【LeetCode 92.】 反转链表 II

1.题目 虽然本题很好拆解&#xff0c;但是实现起来还是有一些难度的。 2. 分析 尽可能抽象问题&#xff0c;然后简化代码 我在写本题的时候&#xff0c;遇到了下面这两个问题&#xff1a; 没有把[left,right] 这个区间的链表给断开&#xff0c;所以导致反转起来非常麻烦。…

梁建章等Nature发表论文:混合办公使员工离职率下降1/3

近日&#xff0c;斯坦福大学 Nicholas Bloom、香港中文大学&#xff08;深圳&#xff09;经管学院韩若冰、携程集团联合创始人兼董事局主席梁建章&#xff0c;在国际顶尖学术期刊 Nature 上发表了题为&#xff1a;Hybrid working from home improves retention without damagin…

cad怎么导出jpg格式高清图?推荐三款心动软件!

在数字化设计领域&#xff0c;CAD&#xff08;计算机辅助设计&#xff09;软件已经成为不可或缺的工具。然而&#xff0c;很多时候我们需要将CAD设计以图片的形式进行分享或展示。如何将CAD设计导出为高清JPG格式图片呢&#xff1f;今天&#xff0c;我将为大家推荐三款令人心动…

流体性能测试实验室建设需求参考

在第一次提需求的时候&#xff0c;很多人感到很迷茫&#xff0c;这里以某流体实验室建设为例&#xff0c;进行说明&#xff0c;希望抛砖引玉&#xff0c;能起到一点参考作用。 一、项目概述 学校拟建一座流体性能测试实验室&#xff0c;旨在兼顾教学和企业科研能力。实验室需…

为国产加油:“缺芯少屏”暂缓,另一领域,也要加把劲

说起咱中国之前的“缺芯少屏”&#xff0c;真的是让人挺闹心的。 不过呢&#xff0c;为了改变这个状况&#xff0c;咱们的工程师们可是费了不少劲儿&#xff0c;辛辛苦苦努力了数十年。现在好了&#xff0c;咱们也迎来了柔性屏的时代。 柔性屏 说起来&#xff0c;在触摸屏或者…

Ubuntu20.04部署Qwen2.openvino流程

下载代码 里面包含依赖 git clone https://github.com/OpenVINO-dev-contest/Qwen2.openvino.gitpython环境配置 创建虚拟环境 conda create -name qwen2openvino python3.10 conda activate qwen2openvino安装依赖 pip install wheel setuptools pip install -r requirem…

优维运营治理三件套:可用性x性能x容量管理

对于系统/应用运维人员&#xff0c;日常工作中需要保证系统/应用的可用性、稳定性和关注系统/应用的性能表现。为了帮助IT人员更好地管理和优化企业的系统和应用&#xff0c;我们引入了三大关键能力&#xff1a;可用性管理、性能管理和容量管理。这些能力不仅能够帮助IT人员发现…

图解系列 图解Kafka之Consumer

文章目录 术语消息主题和分区集群和分区副本消费者组重新平衡组/分区再均衡消费者的分区策略群组协调者Coordinator 和群组领导者 Group Leader 流程初始化流程消费流程Consumer重平衡 消费者核心配置示例代码高级提交偏移量的几种方式自动提交手动同步提交手动异步提交提交特定…

Python深度学习基于Tensorflow(16)基于Transformer的对话实例

文章目录 基础数据清洗数据生成词汇表定义分词器并制作数据集构建Transformer模型并训练模型推理 Tensorflow 的核心就是注意力机制&#xff0c;在之前详细的介绍过&#xff0c;具体可以看这个&#xff1a;Python深度学习基于Tensorflow&#xff08;9&#xff09;注意力机制_te…

解决浏览器缩放的时候,重新设置滚动条的位置,使页面滚动条固定悬浮在页面底部

项目场景&#xff1a; 浏览器调试页面兼容页面时&#xff0c;缩放页面宽度&#xff0c;整体超出时滚动条出现在页面最底部&#xff0c;不是悬浮在页面下面&#xff0c;只有滚动到最底部才出现&#xff0c;需要的是悬浮在页面底部&#xff0c;不是滚动到最下面才出现 解决方案…

二维数组的遍历

旋转图像 class Solution {public void rotate(int[][] matrix) {for(int i0;i<matrix.length;i){for(int ji1;j<matrix[0].length;j){int tempmatrix[i][j];matrix[i][j]matrix[j][i];matrix[j][i]temp;}}for(int[] arr:matrix){reverse(arr);}}void reverse(int[] arr)…

Ant-design-vue开源项目介绍、应用场景、组件有哪些

文章目录 一、Ant-design-vue项目介绍二、Ant-design-vue项目特点三、Ant-design-vue应用场景四、Ant-design-vue有哪些组件五、Ant-design-vue案例代码1. 后台管理系统登录页面的例子2. Table组件使用案例 开源项目地址 一、Ant-design-vue项目介绍 Ant-design-vue 是一个基于…

java面试题:springMVC的执行流程

请求到达前端控制器DispatcherServlet&#xff0c;该组件是SpringMVC的核心组件&#xff0c;负责接收所有的请求。 DispatcherServlet根据请求中的URL和HandlerMapping找到对应的Controller对象&#xff0c;HandlerMapping是一个接口&#xff0c;定义了请求的URL和对应的Contro…

刺客信条找不到emp.dll怎么解决?emp.dll缺失的解决方法解析

emp.dll 是一个动态链接库文件&#xff0c;它在Windows操作系统中扮演着重要的角色。这个文件包含了多个函数和接口&#xff0c;允许其他程序调用这些功能来实现对多媒体设备的控制和管理。根据搜索结果&#xff0c;emp.dll 主要负责以下功能&#xff1a; 多媒体设备管理&…

进阶篇03——SQL优化

insert 优化 主键优化 不好做笔记&#xff0c;但是挺重要的&#xff0c;留个视频链接&#xff1a;主键优化 order by 优化 视频链接&#xff1a;order by 优化 group by 优化 放视频&#xff08;好吧&#xff0c;这篇文章感觉还是看视频容易懂一点&#xff09;&#xff1a;…

一文了解JVM(中)

HotSpot 虚拟机对象探秘 对象的创建 Header解释使用 new 关键字调用了构造函数使用 Class 的 newInstance 方法调用了构造函数使用 Constructor 类的newInstance 方法调用了构造函数使用 clone 方法没有调用构造函数使用反序列化没有调用构造函数说到对象的创建,首先让我们看…