当前位置: 首页 > news >正文

JavaScript实战 - 一个能够做圆周运动的模型

一个能够做圆周运动的模型

    • HTML 文件
    • JavaScript 文件
    • 总结

作者:逍遥Sean
简介:一个主修Java的Web网站\游戏服务器后端开发者
主页:https://blog.csdn.net/Ureliable
觉得博主文章不错的话,可以三连支持一下~ 如有需要我的支持,请私信或评论留言!

下面是一个简单的示例,展示如何使用 HTML 和 JavaScript 来实现一个圆周运动的动画效果。这个例子将创建一个圆形图形,在页面上以圆周运动的方式移动。

HTML 文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Circle Motion Animation</title><style>#circle {width: 50px;height: 50px;background-color: blue;border-radius: 50%;position: absolute;}</style>
</head>
<body><div id="circle"></div><script src="circleAnimation.js"></script>
</body>
</html>

JavaScript 文件

// 获取圆形元素的引用
const circle = document.getElementById('circle');// 设定初始位置和速度
let centerX = 150;  // 圆心初始 x 坐标
let centerY = 150;  // 圆心初始 y 坐标
const radius = 100; // 圆的半径
let angle = 0;      // 初始角度
const speed = 0.02; // 角速度// 定义动画函数
function animateCircle() {// 计算新的位置const x = centerX + radius * Math.cos(angle);const y = centerY + radius * Math.sin(angle);// 更新圆的位置circle.style.left = x + 'px';circle.style.top = y + 'px';// 增加角度,以产生圆周运动angle += speed;// 通过 requestAnimationFrame() 实现动画循环requestAnimationFrame(animateCircle);
}// 调用动画函数开始动画
animateCircle();

总结

  1. HTML 部分:
  • 使用 < div > 元素作为圆形的图形。
  • 通过 CSS 样式设置 border-radius 为 50%,使其成为一个圆形。
  1. JavaScript 部分:
  • 获取圆形元素的引用,通过 getElementById 方法。
  • 设定圆心的初始位置和半径。
  • 使用 Math.cos() 和 Math.sin() 函数来计算圆周运动的 x 和 y 坐标。
  • 使用 requestAnimationFrame() 来实现流畅的动画效果。
  1. 动画实现:
  • animateCircle 函数中计算新的圆心位置,并更新圆形元素的 left 和 top 样式。
  • 使用 requestAnimationFrame() 递归调用 animateCircle 函数,实现持续的动画效果。

这个例子展示了如何利用 JavaScript 和 HTML
来创建一个简单的圆周运动动画。你可以根据需要修改半径、速度、初始位置等参数,以及添加更多的样式和交互效果来丰富这个例子。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • “微软蓝屏”全球宕机,敲响基础软件自主可控警钟
  • HTML:lang属性作用
  • 谷粒商城实战笔记-47-商品服务-API-三级分类-网关统一配置跨域
  • Transformer-Bert---散装知识点---mlm,nsp,较之经典tran的区别和实际应用方式
  • c++中的音乐
  • Linux火焰传感器驱动程序
  • .NET程序集编辑器/调试器 dnSpy 使用介绍
  • 安卓开机启动性能优化之-bootchart相关工具使用及查看
  • 【Django】在vscode中新建Django应用并新增路由
  • 模拟电子技术-实验四 二极管电路仿真
  • IDEA缓存和索引
  • css中如何清除浮动
  • js点击或者双击页面使其全屏,并且内容自适应
  • C++ : 序列容器之Vector
  • 面试场景题系列--(3)如何避免超预期的高并发压力压垮系统?限流算法--xunznux
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • ES6 ...操作符
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • java中的hashCode
  • js如何打印object对象
  • Linux Process Manage
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • passportjs 源码分析
  • Service Worker
  • ucore操作系统实验笔记 - 重新理解中断
  • 闭包--闭包作用之保存(一)
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 强力优化Rancher k8s中国区的使用体验
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 移动端解决方案学习记录
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • Nginx实现动静分离
  • 阿里云服务器购买完整流程
  • 大数据全解:定义、价值及挑战
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • (1)无线电失控保护(二)
  • (11)MATLAB PCA+SVM 人脸识别
  • (7)svelte 教程: Props(属性)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (力扣)1314.矩阵区域和
  • (全注解开发)学习Spring-MVC的第三天
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (一)Linux+Windows下安装ffmpeg
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .net反混淆脱壳工具de4dot的使用
  • [Android]Android P(9) WIFI学习笔记 - 扫描 (1)