编写高效 JavaScript动画 使用定时器技巧和圆周运动

JS实现多张图片绕中心点转动 背景我想实现多张图片绕一个中心点不断转动。 自己对JavaScript不是特别熟悉,但是仍然想实现这样的功能。网上找了许多,没有发现合适的样例。忽然想起大二时翻过的《JavaScript 王者归来》,上面有一段魔法代码,是多张图片进行8字运动。于是找到源码,作出更改,希望能实现多图圆周运动。一张图片先实现简单的情况,一张图片: 我们知道,椭圆的标准方程是x2a2+y2b2=1 \frac{x^2 阅读详情

定时器:JavaScript 提供了两个定时器函数:setTimeout 和 setInterval。通过设置定时器,可以在指定的时间间隔执行代码来创建动画效果。

1、setTimeout: setTimeout函数用于在指定的时间后执行一次代码。它接受两个参数:要执行的代码和延时的时间(以毫秒为单位)。例如,

setTimeout(function(){ ... }, 1000) 

将在延时1秒后执行代码。

2、setInterval: setInterval函数用于以固定的时间间隔循环执行代码。它接受两个参数:要执行的代码和时间间隔(以毫秒为单位)。例如,

setInterval(function(){ ... }, 5000) 

将每隔5秒执行一次代码

在使用定时器时,需要注意性能和用户体验。过多或过频的定时器任务可能会影响网页性能,而过长的定时器延时可能会导致用户等待时间过长。因此,合理地使用和管理定时器非常重要。

下面将展示一个JavaScript通过定时器移动方块:

代码如下:

<head>
    <title>js动画</title>
    //CSS内容
    <style>
        .f {
            width: 500px;
            height: 500px;
            border: 1px solid rebeccapurple;
            position: relative;
        }

        .z {
            width: 100px;
            height: 100px;
            background-color: aquamarine;
            position: absolute;

        }
    </style>
</head>

<body>
    <div class="f">
        <div id="z" class="z">

        </div>
    </div>
</body>
<script>
    //获取
    let z = document.getElementById('z')
    let x = 0, y = 0
    //定时器
    setInterval(() => {
        if(x>=400 || y>=400){
            clearInterval(dsq)
        }
        x++,
        y++
        z.style.top = y + 'px'
        z.style.left = x + 'px'
    }, 10)



</script>

效果图如下:

 

 下面是 圆周运动代码展示:

//只展示JavaScript部分:
<script>
    let r = 200, x0 = 250, y0 = 250;
    let b1 = document.getElementById('b1')
    //定义域x,y表示小球的运动轨迹坐标
    let x = 50, y = 50;
     function start1() {
        //上半圆
        let sbr=setInterval(() => {

            x++
            y = -Math.sqrt(Math.pow(r, 2) - Math.pow(x - x0, 2)) + y0
            b1.style.top = y - 50 + 'px'
            b1.style.left = x - 50 + 'px'
            if (x == 450 && y == 250) {
                //取消上半圆的定时器
                clearInterval(sbr)
                //开启下半圆的定时器
                let xbr = setInterval(() => {
                    x--
                    y = Math.sqrt(Math.pow(r, 2) - Math.pow(x - x0, 2)) + y0
                    b1.style.top = y - 50 + 'px'
                    b1.style.left = x - 50 + 'px'
                    if(x==50 && y==250){
                        //取消下半圆的定时器
                        clearInterval(xbr)
                        //开启上半圆定时器
                        start1() //递归
                    }
                })
            }
        }, 10)
    } 

   
</script>

效果图展示

总结JavaScript 可以使用 DOM 操作、定时器、CSS3 动画、Canvas 等技术来创建动画效果。同时,JavaScript 动画库和框架也可以帮助简化动画的开发过程。

Android性能优化之Android Profiler 在移动应用开发中,打造一个流畅、省电且不卡顿的用户体验是至关重要的。然而,随着应用功能的日益复杂,内存泄漏、CPU暴涨、网络卡顿以及电量消耗过快等问题常常化身为隐形杀手,悄悄吞噬着用户体验。为了帮助开发者精准定位并解决这些性能瓶颈,谷歌在Android Studio中集成了一款强大的一站式性能分析工具Android Profiler。Android Profiler作为Android Studio内置的实时数据可视化工具,支持运行在Android 5.0及更高版本的设备上。 阅读详情

相关推荐

汇编语言(第4版)王爽 课程设计2 详细实现(一、虚拟模式DOS运行篇)

由于虚拟模式的限制,我们编写的许多逻辑暂时不能被检验,而因为《汇编语言》编写时间较早,其所依赖的运行环境如今只能够依靠虚拟机来搭建。比如实模式DOS,搭建步骤比较繁琐,因此我将其它的部分放在下一篇文章中进行讲解。事实上,我们实现的程序属于《汇编语言》课程设计2中任务程序部分,其中的完整任务还涉及到将该任务程序安装到软盘等操作,这些也都需要在实模式下才能运行,所以统一放到下一篇文章进行实现。

m0_73327328的博客 2824

JavaScript基础进阶——定时器设置动画效果

setTimeout(调用函数,[延迟时间(毫秒)]) 设置定时器 时间默认为0。

m0_52001826的博客 824

LPDDR5/5X BG mode,8B mode和16B mode

LPDDR5/5X 器件,协议上支持多个bank架构可静态配置;配置在MR3:模式说明协议要求速率要求BLBG模式每CH 4BG, 4BALPDDR5/5X>3200MbpsBL16 & 328B模式每CH 8BALPDDR5任何速率BL3216B模式每CH 16BALPDDR5/5X<=3200MbpsBL16 & 32。

hemlok的博客 8865

Javascript应用(旋转圆)

1. setInterval(function,time) 周期函数-指定时间后,重复执行指定函数(其中time的单是毫秒,1000毫秒=1s)2. setTimeout(function,time) 延时定时器-指定时间后,执行一次函数(其中time的单是毫秒,1000毫秒=1s)5.将setTimeout() 定时器无限进行。4.同时调用两种方式。

m0_74977981的博客 464

BAQ压缩原理

BAQ——Block Adaptive Quantization,块自适应量化,一种数据压缩算法。

2875

[网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster原理详解

Web渗透技术的核心是发现Web漏洞,发现漏洞有手工和软件自动化扫描两种方式。对于用户验证漏洞、用户凭证管理问题、SQL注入等常见Web漏洞,都可以通过Web扫描器进行扫描。各个扫描器的功能和结果都不同,常见的包括HScan、HScan、X-Sccan、Acunetix Web Vulnerability Scanner、Jsky、Router Scan扫描工具等。本文主要讲解三个常见的Web漏洞扫描工具,分别是NMapp、ThreatScan和DirBuster。希望这篇基础性文章对你有所帮助.

杨秀璋的专栏 1万+

js圆周运动动画_javascript-js圆周运动

vart;varspeed=10;vartarget=315;variNow=225;varr=100;varcenter=200;document.onclick=function(){clearInterval(t);t=setInterval(()=>{if(iNow==target){clearInterval(t);}else{iNo...

weixin_30799553的博客 200

2025年微信小程序获取手机号授权登录注册详细教程(含服务端)。不弹窗原因以及减少组件用量的方法

前端把获取到的code传给后端,后端获取access_token和前端传过来的code,请求服务器接口,即可获取到手机号。

coderYYY的博客 3万+

iOS动画进阶(十一)基于定时器的动画

基于定时器的动画 我可以指导你,但是你必须按照我说的做。 -- 骇客帝国 在第10章“缓冲”中,我们研究了CAMediaTimingFunction,它是一个通过控制动画缓冲来模拟物理效果例如加速或者减速来增强现实感的东西,那么如果想更加真实地模拟物理交互或者实时根据用户输入修改动画改怎么办呢?在这一章中,我们将继续探索一种能够允许我们精确地控制一帧一帧展示的基于定时器的动画。

mianhuaijiaju的专栏 844

【原理图PCB专题】案例:双排0.5mm间距座子转单排0.5mm间距座子Layout方案分析

本文提供一种分析思路,并通过实际案例来进行Layout方案分析的讲解。

一点硬件 456

CKA-题库-简洁参考答案-反复练习20遍-必过!!!

新版CKA考试已于2020年9月1日正式上线! 考试模式:线上考试 考试时间:2小时 认证有效期:3年 软件版本:Kubernetes v1.19 重考政策:可接受1次重考 经验水平:中級 题目数量:17题 题库量小:随机的题目重复率极高 考试时可打开两个浏览器Tab,一个是考试窗口,一个用来查阅官方文档](https://kubernetes.io/docs/) 01 Task - 英文 Create a new ClusterRole named deployment-clusterrole tha.

随笔记录-分享&记忆 7318

Canvas动画实战:基于参数方程实现小球沿斜椭圆轨迹运动

在数据可视化与前端动画开发中,参数方程是描述物体运动轨迹的核心数学工具,它通过一个独立参数(如时间或角度)同时控制坐标变化,能精准定义复杂路径。其原理在于将几何图形(如椭圆)用三角函数表示,并通过旋转矩阵实现坐标变换,从而生成任意朝向的轨迹。这一技术价值在于为动态视觉元素提供了高度可控、平滑的运动基础,广泛应用于加载动画、数据图表指示、游戏物理模拟等场景。本文聚焦于Canvas环境下,结合旋转矩阵与参数方程,详细解析如何实现小球沿斜椭圆轨迹的平滑运动,并涵盖性能优化与交互增强等工程实践,其中涉及reques

weixin_30466039的博客 356

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

嵌入式GUI窗口管理器:从消息机制到多任务安全的emWin实战

在嵌入式系统开发中,图形用户界面(GUI)是连接用户与设备的关键桥梁,其核心在于窗口管理机制。窗口管理器通过统一抽象所有可视元素为窗口,并基于坐标系、父子关系和Z序构建层级结构,实现了界面元素的灵活组织。其底层依赖消息驱动架构,采用回调函数响应系统事件,遵循“好莱坞原则”简化应用逻辑。这种设计在多任务实时操作系统(RTOS)环境中尤为重要,需要通过GUI_X接口实现线程安全的互斥锁与事件同步,确保绘图与窗口操作在并发场景下的数据一致性。emWin作为高性能嵌入式GUI库,其窗口管理器模块正是这一技术的典型代

weixin_34174322的博客 616

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

基于ESP32与CNC技术打造智能互动光绘机器人

运动控制与嵌入式系统是物联网和智能硬件的核心技术基础,它们通过精确的算法驱动执行机构,实现从自动化到智能交互的跨越。在艺术科技领域,这些技术为创意表达提供了全新的可能性。光绘作为一种视觉艺术形式,传统上依赖手动控制,而结合计算机数控(CNC)的路径规划能力和ESP32物联网芯片的实时处理与无线通信功能,可以构建出可编程、高精度的智能绘制平台。该平台不仅实现了矢量图形的精准复现,更能通过集成传感器(如超声波测距)和摄像头模块,引入实时的人机互动维度,例如根据距离动态调整绘制轨迹或进行视觉追踪。这种CNC框架与

weixin_30328063的博客 397

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

定时器应用之动画效果实现

定时器应用之动画效果实现 html文件: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>定时器应用实现动画效果</title> <style>

weixin_44019720的博客 565

定时器完成简单动画

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>简单的动画效果</title> <style> *{ padding: 0px; mar...

weixin_44552543的博客 411

定时器实现动画的一个例子

定时器实现动画 #div1{ width:100px; height:100px;position:absolute; top:0; left:900px; background:#F00} span{ position:absolute; top:110px; left:20px; background:green; width:50px; margin:10px; height:20px}

undefined的专栏 1614

Web 版翻译者资料库

本项目是桌面版《翻译者资料库》的 Web 移植版,基于 Spring Boot 3.3、Thymeleaf、Bootstrap 5.3 与 MySQL 8.0 构建。它面向翻译写作提供资料、词汇、句库、文本工具、对照制作、查找、备份恢复及旧库迁移等功能,完整继承桌面版核心业务规则,支持一键启动与离线访问。

howard2005的专栏 149

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 351

副队长BootStrap5探究(2)--按钮与按钮组

本文系统讲解Bootstrap 5按钮组件的使用与底层原理。通过CDN引入框架,掌握btn基础类及primary、success等主题色应用,学习轮廓按钮(btn-outline-*)、尺寸控制(btn-lg/sm)、块级布局(d-block)和禁用状态(disabled)等实用功能。结合源码解析,深入理解其基于CSS的圆角、过渡动画、伪类交互实现机制,实现“快速上手+原理掌握”的双重目标,助力前端技能进阶。

编程副队长 675

DSH (DeepSeek Harness) Windows 升级安装指南20261107

注意:如果在普通窗口执行 nvm 提示找不到命令,或执行 nvm use 提示 Access is denied,请务必关闭当前窗口,重新打开一个管理员CMD 执行上述完整路径命令。找到 .credentials.yaml,将其重命名为 .credentials.yaml.bak(备份并使其失效)。Node.js Storage Location:可改到非系统盘(如 D:\dev\nvm,避免路径含空格或中文)。打开文件资源管理器,进入 C:\Users<你的用户名>.dsh\。

fengye207161的博客 229

SpringBoot「衣依」服装销售平台:144个Java文件180个接口,从挑衣服到收货评价整条链路都在

# SpringBoot「衣依」服装销售平台:144个Java文件180个接口,从挑衣服到收货评价整条链路都在 > 这是一套基于 Spring Boot 的服装销售平台源码,配套 `db.sql` 建表脚本,业务覆盖商品展示、购物车、订单流转、收货地址、订单评价、商品评论、在线客服、轮播图和资讯。形态是**前后台双端**:前台是顾客逛的商城,后台是管理员管的控制台。本文带你看清里面有什么、怎么跑

面朝大海 227

微信小程序-wxs

在微信开发者工具中右键创建.wxs后缀的文件。每个.wxs文件也是一个独立模块,同样使用导出内容。示例(文件return d;FOO: foo,bar: bar(外联定义参考官方文档)

dreams_dream的博客 352

汽车租赁系统(协同过滤算法、支付宝沙盒支付、 腾讯地图接入、WebSocket在线沟通、ECharts运营分析、三角色协同、还车费用处理)

本系统基于B/S架构,采用前后端分离设计,集成SpringBoot3、Vue2、MySQL等技术,实现用户、商家、管理员三角色协同管理。亮点包括:车型加权推荐与话题协同过滤算法提升个性化体验;支付宝沙盒支付、腾讯地图定位、WebSocket在线沟通保障流程闭环;还车费用智能计算与ECharts多维数据可视化助力运营分析,全面支持租车全生命周期管理。

paopaokaka_luck的博客 162

设计模式(unity游戏研发版)

当你使用图形用户界面类时通常会遇到一个问题。比如,你创建了自定义按钮类并允许客户端在按钮中注入自定义代码,这样当用户按下按钮时就会触发这些代码。观察者模式允许任何实现了订阅者接口的对象订阅发布者对象的事件通知。你可在按钮中添加订阅机制,允许客户端通过自定义订阅类注入自定义代码。在Unity中,这就像UnityEvent在Inspector中绑定多个回调。

m0_63330263的博客 107

【技术专题】JavaScript 网页技术 - JavaScript 流程控制

小锋老师推出《一天学会JavaScript(无废话版)》视频教程,涵盖基础语法、流程控制、函数、数组对象、DOM操作及ES6新特性。内容精炼,配套课件与源码打包下载,助力快速入门。重点讲解if/else、switch、for/while循环、for...of/in遍历及break/continue使用场景,并通过成绩判断实例演示实际应用。适合零基础学习者高效掌握核心技能。

java1234的博客 165
上一篇: CSS+JavaScript总结
下一篇: 深入理解JavaScript 示例 提升自我开发技能
小 zi
博客等级 码龄5年 3粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值