位置: IT常识 - 正文

【JavaScript-动画原理】如何使用js进行动画效果的实现(javascript动画教程)

编辑:rootadmin
【JavaScript-动画原理】如何使用js进行动画效果的实现 💂 个人主页:Aic山鱼 

推荐整理分享【JavaScript-动画原理】如何使用js进行动画效果的实现(javascript动画教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js动画效果有哪些,js动画制作,js动画原理,js动画原理,javascript 动画,javascript动画效果代码html,javascript动画教程,javascript动画教程,内容如对您有帮助,希望把文章链接给更多的朋友!

 个人社区:山鱼社区

💬 如果文章对你有所帮助请点个👍吧!欢迎关注、点赞、收藏(一键三连)和订阅专哦

目录

前言

1.动画原理

2.动画函数的封装

3.给不同元素添加定时器

4.缓动动画原理

5.给动画添加回调函数

6.动画函数的使用

 写在最后


前言

动画对于我们来说都不陌生,css里面就有很多动画,2d,3d等各种动画,本篇主要是如何使用js实现动画效果,如果本篇文章对你有帮助,点赞支持一下吧!

1.动画原理

        1.获得盒子当前位置         2.让盒子在当前位置加上1个移动距离         3.利用定时器不断重复这个操作         4.加一个结束定时器的条件                 5.注意该元素需要添加定位,才能使用element.style.left

<body> <div> </div> <script> var div = document.querySelector('div'); var timer = setInterval(function () { if (div.offsetLeft >= 500) { clearInterval(timer); } div.style.left = div.offsetLeft + 2 + 'px'; }, 30) </script></body>

主要核心就是利用定时器进行动画的实现

2.动画函数的封装<script> // 简单动画函数封装 function animate(obj, rug) { var timer = setInterval(function () { if (obj.offsetLeft >= rug) { clearInterval(timer); } obj.style.left = obj.offsetLeft + 2 + 'px'; }, 30) } var div = document.querySelector('div'); animate(div,300); </script>

把这个动画封装成一个函数,方便以后的使用,该封装函数里的obj是哪个元素要进行动画的实现rug是该元素要移动多少距离

3.给不同元素添加定时器<body> <div> </div> <button>点击走</button> <script> // 简单动画函数封装 // 给不同元素添加定时器 function animate(obj, rug) { clearInterval(obj.timer); obj.timer = setInterval(function () { if (obj.offsetLeft >= rug) { clearInterval(obj.timer); } else { obj.style.left = obj.offsetLeft + 2 + 'px'; } }, 30) } var div = document.querySelector('div'); var but = document.querySelector('button'); but.addEventListener('click', function () { animate(div, 200); }) </script>

这样就能实现多个元素进行动画的使用了,并且每个元素都有属于自己的定时器

4.缓动动画原理

公式:目标值-现在的位置/10 ,作为每次的移动距离

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> div { position: absolute; left: 0; width: 100px; height: 100px; background-color: pink; } </style></head><body> <button>点击</button> <div></div> <script> function animate(obj, rug) { clearInterval(obj.timer); obj.timer = setInterval(function () { // 步长值 var step = (rug - obj.offsetLeft) / 10; if (obj.offsetLeft == rug) { clearInterval(obj.timer); } else { obj.style.left = obj.offsetLeft + step + 'px'; } }, 15) } var div = document.querySelector('div'); var but = document.querySelector('button'); but.addEventListener('click', function () { animate(div, 500); }) </script></body></html>【JavaScript-动画原理】如何使用js进行动画效果的实现(javascript动画教程)

 

5.给动画添加回调函数

回调函数原理:函数可以作为一个参数。将这个函数作为参数传到另一个函数里面 ,当那个函数执行完之后,再执行传进去的这个函数,这个过程就叫做回调。

当跑完800米后,会弹出一个框“hello”,这个就是在执行完800米这个动画后再次进行的函数,这就是回调函数

 6.动画函数的使用

实现侧边栏滑动效果

当鼠标经过slider就会让con这 个盒子滑动到左侧

当鼠标离开slider就会让con这 个盒子滑动到右侧

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script src="./js/animate.js"></script> <style> .silder { margin-left: 1600px; text-align: center; position: relative; line-height: 100px; width: 100px; height: 100px; background-color: aqua; } span {} .con { position: absolute; top: 0; left: 0; z-index: -1; width: 200px; height: 100px; background-color: rgb(132, 0, 255); } </style></head><body> <div class="silder"> <span>←</span> <div class="con">问题反馈</div> </div> <script> var silder = document.querySelector('.silder'); var con = document.querySelector('.con'); var span = document.querySelector('span'); silder.addEventListener('mouseenter', function () { animate(con, -200, function () { span.innerHTML = '→'; }); }) silder.addEventListener('mouseleave', function () { animate(con, 0, function () { span.innerHTML = '←'; }); }) </script></body></html>

function animate(obj, rug, callback) { clearInterval(obj.timer); obj.timer = setInterval(function () { // 步长值 // var step = Math.ceil((rug - obj.offsetLeft) / 10); var step = (rug - obj.offsetLeft) / 10; step = step > 0 ? Math.ceil(step) : Math.floor(step); if (obj.offsetLeft == rug) { clearInterval(obj.timer); if (callback) { callback(); } } else { obj.style.left = obj.offsetLeft + step + 'px'; } // 回调函数写道计时器结束里 }, 15)} 写在最后

我是Aic山鱼,感谢您的支持 ​原 创 不 易 ✨还希望支持一下 点赞👍:您的赞赏是我前进的动力! 收藏⭐:您的支持我是创作的源泉! 评论✍:您的建议是我改进的良药! 山鱼🦈社区:山鱼社区💌💌

希望三连下👍⭐✍支持一下博主🌊

本文链接地址:https://www.jiuchutong.com/zhishi/295692.html 转载请保留说明!

上一篇:Termux安装完整版Linux(Ubuntu)详细步骤(termux 安装)

下一篇:Windows10系统CUDA和CUDNN安装教程(WINDOWS10系统怎样给电脑分区)

  • 华为手机相册照片怎么压缩打包(华为手机相册照片正在加载)

    华为手机相册照片怎么压缩打包(华为手机相册照片正在加载)

  • 小米手机通话自动录音怎么设置(小米手机通话自动挂断的解决方案)

    小米手机通话自动录音怎么设置(小米手机通话自动挂断的解决方案)

  • 微信交话费能打发票吗(微信上交话费可以打发票吗)

    微信交话费能打发票吗(微信上交话费可以打发票吗)

  • 手机微信密码忘记了手机号码换了怎么登录(手机微信密码忘了该怎么办?)

    手机微信密码忘记了手机号码换了怎么登录(手机微信密码忘了该怎么办?)

  • 手机升级系统后怎么恢复旧系统(手机升级系统后没有信号了怎么办)

    手机升级系统后怎么恢复旧系统(手机升级系统后没有信号了怎么办)

  • 微店不注销有什么后果(微店账号注销了能找回来吗)

    微店不注销有什么后果(微店账号注销了能找回来吗)

  • 在对幻灯片切换选项卡中不能设置的是(在幻灯片切换中,不可以设置)

    在对幻灯片切换选项卡中不能设置的是(在幻灯片切换中,不可以设置)

  • wma是无损格式吗(wma是不是无损格式)

    wma是无损格式吗(wma是不是无损格式)

  • asc文件是干嘛的(asc后缀是什么文件)

    asc文件是干嘛的(asc后缀是什么文件)

  • 快手已戳怎么取消不了(快手已戳是什么意思怎么取消)

    快手已戳怎么取消不了(快手已戳是什么意思怎么取消)

  • 怎么将ppt保存到u盘里(怎么将PPT保存到D盘新建文件夹里)

    怎么将ppt保存到u盘里(怎么将PPT保存到D盘新建文件夹里)

  • 在计算机领域中裸机是指(在计算机领域中通常用主频来描述)

    在计算机领域中裸机是指(在计算机领域中通常用主频来描述)

  • 电子邮件常用的传输协议(电子邮件常用的传输协议是)

    电子邮件常用的传输协议(电子邮件常用的传输协议是)

  • 华为lldal10什么型号(华为lldal10是什么型号多少钱)

    华为lldal10什么型号(华为lldal10是什么型号多少钱)

  • 华为路由A2什么时候发布(华为路由器a2上市时间)

    华为路由A2什么时候发布(华为路由器a2上市时间)

  • 华为荣耀手环4怎样打电话(华为荣耀手环4防水吗)

    华为荣耀手环4怎样打电话(华为荣耀手环4防水吗)

  • 抖音怎么找同款特效(抖音怎么找同款衣服)

    抖音怎么找同款特效(抖音怎么找同款衣服)

  • 华为p30有没有5g(华为p60是5g吗)

    华为p30有没有5g(华为p60是5g吗)

  • supersu怎么用(supersu使用教程)

    supersu怎么用(supersu使用教程)

  • 手机右上角月亮是什么意思(手机右上角月亮标志是什么意思)

    手机右上角月亮是什么意思(手机右上角月亮标志是什么意思)

  • 抖音如何把视频和照片放一起(抖音如何把视频弄成合集)

    抖音如何把视频和照片放一起(抖音如何把视频弄成合集)

  • 一加7支持防水吗(一加七防水嘛)

    一加7支持防水吗(一加七防水嘛)

  • 电脑变慢了 如何解决(电脑较慢怎么办)

    电脑变慢了 如何解决(电脑较慢怎么办)

  • 新版Edge浏览器开启“在关闭多个标签页之前询问”功能(新版edge浏览器如何恢复设置)

    新版Edge浏览器开启“在关闭多个标签页之前询问”功能(新版edge浏览器如何恢复设置)

  • 为什么win7“添加或删除程序”列表仍留已卸载的程序名?(win7为什么不能安装软件)

    为什么win7“添加或删除程序”列表仍留已卸载的程序名?(win7为什么不能安装软件)

  • 最好的版本是什么?适合Linux新手的2017最佳发行版(市面最高版本)

    最好的版本是什么?适合Linux新手的2017最佳发行版(市面最高版本)

  • 织梦检索数据查询数据库前端实现搜索功能(PHP网站通用)(织梦cms官网)

    织梦检索数据查询数据库前端实现搜索功能(PHP网站通用)(织梦cms官网)

  • 一般纳税人增值税税率
  • 一般纳税人纳税申报时间
  • 付款后发票可以抵扣吗
  • 现金流量表存货增加是负的
  • 管理费用贷方有哪些递减
  • 购买工业用地税费
  • 包装物押金是含税价格吗
  • 事业单位收到借款分录
  • 软件即征即退怎么算
  • 营改增对企业的影响案例
  • 2018增值税暂行条例
  • 技术转让税收优惠政策500万
  • 小规模820如何填写申报表?
  • 预缴所得税会计分录怎么做
  • 外币报表折算差额为负数代表
  • 进货价加多少卖不亏增值税
  • 会计报表怎么处理
  • 苹果电脑重新安装系统磁盘锁了怎么办
  • wim文件用什么软件打开
  • 无形资产入账摊销
  • 没有进项发票的货物能算成本吗
  • 生产车间设备检测费计入什么科目
  • 发票差额怎样做分录
  • win11打不开英雄连2
  • mysql-relay-bin
  • linux网络接口状态命令
  • 过桥资金账务处理
  • 睡莲怎样养
  • vue使用jquery
  • 合同权益转让 范本
  • 研发费用如何加计扣除何时申报
  • gridviewcolumn
  • 小满秒懂百科
  • 融资租入的机器设备属于什么科目
  • 毕业设计基于web难还是JAVA
  • php的输出语句
  • 工资的会计账务处理
  • html5+css3web前端设计基础教程
  • 出售子公司股权不丧失控制权
  • 理财产品利息计算方法
  • 什么是支付宝账号如何查看
  • url静态化怎么操作
  • 企业合并属于非企业吗
  • 制造行业结转成本
  • 去年留抵税额会计分录
  • 金税四期能监控到公户吗
  • 关于固定资产的说法
  • 文化事业建设费会计分录
  • 电子发票查询真伪
  • 总公司账务处理
  • 车船使用税必须每年都交吗
  • 同花顺为什么有钱没法买
  • 商业汇票怎么算到期日
  • 个人向公司账户存现金
  • 从mysql导出数据
  • sql如何随机抽样
  • 自动备份mssql server数据库并压缩的批处理脚本
  • 卡巴斯基key
  • mac的虚拟机
  • centos命令行乱码
  • win7开机chkdsk
  • windows7使用
  • win8切换到桌面
  • 弹窗windows10安装失败
  • linux使用curl进行接口测试
  • linux给文件赋全部权限
  • r语言和python画图
  • node.js deno
  • activity启动流程图解
  • js展示
  • 相机调取失败
  • 怎么做一个扇形图
  • jquery示例
  • 用jquery写注册界面
  • jquery实现动画
  • 陕西省税务局发来信息通知
  • 怎么查询购置税交了没有
  • 一般纳税人企业所得税5%还是25%
  • 税务局与税务所工资哪个高
  • 国税局信息中心事业编待遇
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设