位置: 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系统怎样给电脑分区)

  • 支付宝拉黑还能收到对方的转账吗(支付宝拉黑还能转账给对方吗)

    支付宝拉黑还能收到对方的转账吗(支付宝拉黑还能转账给对方吗)

  • 苹果手机丢失了怎么查找位置(苹果手机丢失了怎么办)

    苹果手机丢失了怎么查找位置(苹果手机丢失了怎么办)

  • 华为nova4e手机怎么隐藏应用(华为nova4e手机怎么拆开)

    华为nova4e手机怎么隐藏应用(华为nova4e手机怎么拆开)

  • i58250u为低端处理器吗(i58250ucsgo)

    i58250u为低端处理器吗(i58250ucsgo)

  • 华为mate10手机尺寸(华为手机mate10尺寸大小)

    华为mate10手机尺寸(华为手机mate10尺寸大小)

  • 电脑显示器hz啥意思(显示器hz什么意思)

    电脑显示器hz啥意思(显示器hz什么意思)

  • 电池cca是什么意思(电池上cca什么意思)

    电池cca是什么意思(电池上cca什么意思)

  • 智能卡服务未启动(智能卡未启用)

    智能卡服务未启动(智能卡未启用)

  • oppo手机清除数据的时候也要密码怎么办(oppo手机清除数据后怎么恢复)

    oppo手机清除数据的时候也要密码怎么办(oppo手机清除数据后怎么恢复)

  • 计算机键盘上的shift键称为什么键(计算机键盘上的定位键是哪两个键)

    计算机键盘上的shift键称为什么键(计算机键盘上的定位键是哪两个键)

  • 荣耀9x如何隐藏应用图标(荣耀9x如何隐藏手机应用)

    荣耀9x如何隐藏应用图标(荣耀9x如何隐藏手机应用)

  • 华为mate30pro手机发热是怎么回事(华为mate30pro手机电池容量)

    华为mate30pro手机发热是怎么回事(华为mate30pro手机电池容量)

  • 拉黑删除后发消息显示什么(拉黑后删除发消息过去会显示什么)

    拉黑删除后发消息显示什么(拉黑后删除发消息过去会显示什么)

  • 微信运动添加关注的人找不到(微信运动添加关注搜不到对方)

    微信运动添加关注的人找不到(微信运动添加关注搜不到对方)

  • 7p指纹不灵敏怎么回事(7p指纹识别不了什么原因)

    7p指纹不灵敏怎么回事(7p指纹识别不了什么原因)

  • 显示器ssusb接口是什么(显示器后面的ss usb)

    显示器ssusb接口是什么(显示器后面的ss usb)

  • ipad型号a1822是哪款(ipad型号a1822是air3吗)

    ipad型号a1822是哪款(ipad型号a1822是air3吗)

  • 企业微信可以同时加入两个企业吗(企业微信用途)

    企业微信可以同时加入两个企业吗(企业微信用途)

  • 路由器怎么重启(移动路由器怎么重启)

    路由器怎么重启(移动路由器怎么重启)

  • 苹果7手机lla是什么版本(iphone七是什么手机)

    苹果7手机lla是什么版本(iphone七是什么手机)

  • 一年多的微信聊天记录能恢复吗(一年多微信聊天删了可以找回来吗)

    一年多的微信聊天记录能恢复吗(一年多微信聊天删了可以找回来吗)

  • qq怎么弄精选照片不显示(qq精选照片怎么设置2021)

    qq怎么弄精选照片不显示(qq精选照片怎么设置2021)

  • 充电器发烫对手机有影响吗(充电器充电发烫会不会爆炸)

    充电器发烫对手机有影响吗(充电器充电发烫会不会爆炸)

  • 怎么设置自己正在通话中(怎么设置自己正在听歌)

    怎么设置自己正在通话中(怎么设置自己正在听歌)

  • 为什么截屏图片模糊(为什么截屏图片看不到)

    为什么截屏图片模糊(为什么截屏图片看不到)

  • Win11 Build 22000.282正式版推送: 附更新修复内容汇总

    Win11 Build 22000.282正式版推送: 附更新修复内容汇总

  • Vue+EleMentUI实现el-table-colum表格select下拉框可编辑(element ui+vue)

    Vue+EleMentUI实现el-table-colum表格select下拉框可编辑(element ui+vue)

  • 卖旧书侵权吗
  • 出差加油算什么费用
  • 预算资产负债表
  • 管理费里面可以取现金吗
  • etc充值怎么操作
  • 弥补以前年度亏损从哪里取数
  • 预借差旅费,付给现金会计分录
  • 销售商品的会计分录现金折扣
  • 土地使用税怎么终止
  • 股权转让需要缴纳企业所得税吗
  • 公司老板个人卡收款 出纳有责任吗
  • 企业自主研发的成功案例
  • 城镇土地使用税纳税义务发生时间
  • 商品进销差价是资产类账户,其抵减的账户是
  • 货币基金可以投资
  • 变更法人税务怎么变更
  • 固定资产抵扣税金算增值税吗怎么算
  • 技术转让所得减去成本吗
  • 固定资产对外投资增值税
  • 垃圾清运属于什么大类
  • 出口退税免退税办法
  • 应收出口退税属于哪个会计科目
  • 事业单位财政直接支付了费用忘记入帐
  • 网银年费如何做账
  • PHP:xml_set_processing_instruction_handler()的用法_XML解析器函数
  • 结转工程成本属于什么会计科目
  • win11可以触屏吗
  • 增值税进项税抵扣销项税
  • 没有审计报告的情况说明
  • 企业研发费用加计扣除最新政策
  • 什么是水利建设基金税
  • 失控增值税专用发票
  • 图书管理系统的软件结构图
  • vi命令模式下的常用命令有哪些?
  • phpgd库怎么开
  • 基于个人同意处理个人信息的个人什么撤回其同意
  • 标书中组织结构是什么意思
  • 法人给对公账户转账
  • 营业收入小于利息收入
  • 其他收益在利润表填在哪里
  • java sc
  • okhttp源码解读
  • mysql查看创建表代码
  • mongodb部署安装
  • 固定资产清理借方表示什么意思
  • 基于stm32的毕业设计
  • 企业福利费账务处理
  • 增值税专用发票丢了怎么补救
  • 企业清算所得税申报
  • 公司一年发两次奖金
  • 固定资产申请报告
  • 逐步测试法计算内含报酬率
  • 各大银行网银转账限额
  • 营业外收入在汇算清缴里填哪张表
  • 赠送电影票文案
  • 少交税款滞纳金
  • 所有者权益的来源包括
  • 哪些合同不受法律保护
  • 生产企业消防设施管理规定
  • 超市购物卡怎么办理
  • 新办企业建账
  • mysql基于什么模型
  • 关于数据库连接池,下列说法错误的是
  • centos rpm包存放位置
  • 目前默认系统%1
  • 要建立linux分区可以有哪几种方法
  • win7 32位旗舰版电脑城下载
  • popup怎么用
  • ms-sys
  • unity怎么创建字体
  • javascript的理解
  • for循环取数据
  • js类的实现
  • 猫的喵喵
  • js实现拖拽div的弹出框
  • python3 split()
  • 央企收入归谁
  • 小规模纳税人租金收入增值税税率
  • 别人给公司开的普票,怎么查询
  • 双流税务总局电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设