JavaScript实现圆周运动效果

在 JavaScript 中,可以通过 requestAnimationFrame 和数学公式来实现圆周运动效果。以下是示例代码:

示例代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript 圆周运动</title>
<style>body {display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;background: #f4f4f4;}.orbit {position: relative;width: 200px;height: 200px;border: 1px dashed #aaa; /* 圆形轨道 */border-radius: 50%; /* 圆形 */}.object {position: absolute;width: 20px;height: 20px;background: red;border-radius: 50%;}
</style>
</head>
<body><div class="orbit"><div class="object"></div></div><script>// 获取元素const object = document.querySelector('.object');const orbit = document.querySelector('.orbit');// 圆心和半径const centerX = orbit.offsetWidth / 2;const centerY = orbit.offsetHeight / 2;const radius = centerX - 10; // 轨道半径,减去 object 的一半宽度let angle = 0; // 当前角度// 动画函数function animate() {// 计算物体的 x 和 y 坐标const x = centerX + radius * Math.cos(angle) - object.offsetWidth / 2;const y = centerY + radius * Math.sin(angle) - object.offsetHeight / 2;// 设置物体位置object.style.transform = `translate(${x}px, ${y}px)`;// 增加角度angle += 0.02; // 控制速度,值越大速度越快// 循环动画requestAnimationFrame(animate);}// 开始动画animate();
</script>
</body>
</html>

在这里插入图片描述

代码解析

  1. 轨道和圆心:

    • 获取轨道的宽度和高度,并通过 offsetWidthoffsetHeight 计算圆心的坐标 (centerX, centerY)
    • 定义半径 radius,根据轨道大小减去运动物体的一半宽度。
  2. 角度计算:

    • 使用角度变量 angle 表示当前的旋转位置,单位为弧度。
    • 每帧增加一个小的角度值(如 0.02)来控制匀速运动。
  3. 坐标计算公式:

    • 水平方向 ( x = \text{centerX} + \text{radius} \cdot \cos(\text{angle}) )
    • 垂直方向 ( y = \text{centerY} + \text{radius} \cdot \sin(\text{angle}) )
  4. 元素位置更新:

    • 使用 transform: translate(x, y) 设置物体的新位置。
  5. 动画循环:

    • 使用 requestAnimationFrame 来创建平滑的动画循环。

参数调整

  • 速度: 修改 angle += 0.02,值越大,运动越快。
  • 轨道大小: 改变 .orbit 的宽高,同时调整 radius 值。
  • 初始位置: 调整 angle 的初始值(例如 Math.PI / 2 表示从顶部开始)。

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

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

相关文章

11.爬虫

前言&#xff1a; 正则表达式的作用&#xff1a; 作用一&#xff1a;校验字符串是否满足规则 作用二&#xff1a;在一段文本中查找满足要求的内容 一.Pattern类和Matcher类&#xff1a; 1.Pattern类&#xff1a;表示正则表达式 a.因此获取Pattern对象就相当于获取正则表达式…

Java项目实战II基于微信小程序的无中介租房系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着城市化进程的加速&#xff0c;租房市场日益繁荣&a…

Linux里面实时查看项目的tomcat服务器日志文件

目录 前言 一、查看tomcat服务器日志 二、运行项目验证&#xff08;篇外&#xff09; (一)运行自己的项目 二、发送验证码测试 前言 这个可以查看在Linux系统里面部署运行项目的日志&#xff0c;日志内可以查看到运行和各种错误以及前后端交互传输的各种数据&#xff0c;…

12,攻防世界simple_php

simple_php 题目来源:Cyberpeace-n3k0 题目描述: 小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。 进入靶场 这段PHP代码是一个简单的web应用示例&#xff0c;让我们逐步分析这段代码&#xff1a; show_source(__FILE__);&#xff1a;这行代码会显示当前文件的…

Webpack Tree Shaking 技术原理及应用实战,优化代码,精简产物

前言 在前端开发中&#xff0c;优化代码体积和提升应用性能是至关重要的课题。Webpack 提供了多种优化手段来帮助开发者实现这一目标&#xff0c;Tree Shaking 就是其中一种非常重要的优化技术&#xff0c;它通过在编译阶段移除未被使用的代码模块&#xff0c;从而显著减小最终…

5G CPE核心器件-基带处理器(三)

5G CPE 核心器件 -5G基带芯片 基带芯片简介基带芯片组成与结构技术特点与发展趋势5G基带芯片是5G CPE中最核心的组件,负责接入5G网络,并进行上下行数据业务传输。移动通信从1G发展到5G,终端形态产生了极大的变化,在集成度、功耗、性能等方面都取得巨大的提升。 基带芯片简…

SpringBoot高级-底层原理

目录 1 SpringBoot自动化配置原理 01-SpringBoot2高级-starter依赖管理机制 02-SpringBoot2高级-自动化配置初体验 03-SpringBoot2高级-底层原理-Configuration配置注解 04-SpringBoot2高级-底层原理-Import注解使用1 05-SpringBoot2高级-底层原理-Import注解使用2 06-S…

ES常见问题汇总

ES常见问题汇总 1.Es的作用&#xff08;elasticsearch&#xff09; 作用&#xff1a; elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff0c;可以帮助我们从海量数据中快速找到需要的内容 ELK技术栈 elasticsearch结合kibana、Logstash&…

linux环境宝塔服务部署安装及介绍

一、简介 宝塔面板是一款服务器管理软件&#xff0c;支持windows和linux系统&#xff0c;可以通过Web端轻松管理服务器&#xff0c;提升运维效率。例如&#xff1a;创建管理网站、FTP、数据库&#xff0c;拥有可视化文件管理器&#xff0c;可视化软件管理器&#xff0c;可视化C…

ONES 功能上新|ONES Project 甘特图再度升级

ONES Project 甘特图支持展示工作项标题、进度百分比、依赖关系延迟时间等信息。 应用场景&#xff1a; 在使用甘特图规划项目任务、编排项目计划时&#xff0c;可以对甘特图区域进行配置&#xff0c;展示工作项的工作项标题、进度百分比以及依赖关系延迟时间等维度&#xff0c…

跨域请求限制的通俗解释

什么是跨域 想象一下&#xff0c;每个网站就像一个独立的小国家&#xff0c;有自己的边界&#xff08;域名&#xff09;。比如&#xff0c;https://example1.com是一个国家&#xff0c;https://example2.com是另一个国家。浏览器就像是这些国家之间的海关&#xff0c;它会检查从…

javascript删除对象属性

1、操作符 delete object.property const obj {age: 19,name: hanmeimei, } delete obj.age2、Reflect.deleteProperty(object, propertyKey) 还会返回布尔值 const obj {age: 19,name: hanmeimei, } Reflect.deleteProperty(obj, name)

Linux 查看系统资源常用命令

目录 Linux 查看系统资源常用命令 一、top 二、htop 三、vmstat 四、iostat 五、mpstat 六、free 七、sar 八、ps 九、pstree 十、lsof 十一、uptime 十二、dmesg 十三、dmidecode 十四、lsblk 十五、blkid 十六、fdisk -l 十七、parted -l 十八、df -h 十…

【text2sql】低资源场景下Text2SQL方法

SFT使模型能够遵循输入指令并根据预定义模板进行思考和响应。如上图&#xff0c;、 和 是用于通知模型在推理过程中响应角色的角色标签。 后面的内容表示模型需要遵循的指令&#xff0c;而 后面的内容传达了当前用户对模型的需求。 后面的内容代表模型的预期输出&#xff0c;也…

楼盘智能化的关键技术:数字孪生如何落地?

随着智慧城市的不断发展&#xff0c;数字孪生技术逐渐成为实现智慧楼盘管理和运营的核心技术之一。通过创建与现实楼盘一一对应的虚拟模型&#xff0c;数字孪生不仅能够提供更加全面、动态的楼盘信息展示&#xff0c;还能为楼盘的建设、管理和用户体验优化提供精准的数据支持和…

Jupyter Notebook认识、安装和启动以及使用

Jupyter Notebook认识、安装和启动以及使用 Jupyter Notebook认识、安装和启动以及使用 Jupyter Notebook认识、安装和启动以及使用一、认识Jupyter Notebook1.1 Jupyter Notebook概述1.2 Jupyter Notebook 重要特性(1)交互式代码执行(2)支持多种编程语言(3)富文本编辑(4)代码高…

【3D AIGC】Img-to-3D、Text-to-3D、稀疏重建(2024年文章汇总)

文章目录 1. Wonderworld&#xff1a;拓展图片边界&#xff0c;生成3D场景2. 3DTopia-XL&#xff1a;扩散模型辅助生成3. 3DGS-Enhancer: 通过视图一致2D Diffusion&#xff0c;提升无界3D Gaussian Splatting (NlPs2024 Spotlight)4. L3DG&#xff1a;Latent 3D Gaussian Diff…

【React】二、状态变量useState

文章目录 1、React中的事件绑定1.1 基础事件绑定1.2 使用事件对象参数1.3 传递自定义参数1.4 同时传递事件对象和自定义参数 2、React中的组件3、useState 1、React中的事件绑定 1.1 基础事件绑定 语法&#xff1a;on 事件名称 { 事件处理程序 }&#xff0c;整体上遵循驼峰…

RNACOS:用Rust实现的Nacos服务

RNACOS是一个使用Rust语言开发的Nacos服务实现&#xff0c;它继承了Nacos的所有核心功能&#xff0c;并在此基础上进行了优化和改进。作为一个轻量级、快速、稳定且高性能的服务&#xff0c;RNACOS不仅包含了注册中心、配置中心和Web管理控制台的功能&#xff0c;还支持单机和集…

嵌入式蓝桥杯学习3 外部中断实现按键

Cubemx配置 前面的配置依旧一样。 原文链接&#xff1a;https://blog.csdn.net/m0_74246768/article/details/144227188 1.打开cubemx&#xff0c;将PB0到PB1配置为GPIO_EXTI模式。 2.在System-Core中点击GPIO&#xff0c;选择PB0到PB2&#xff0c; GPIO_Mode&#xff08;触…