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

  • 研发设备的折旧费计入研发费吗
  • 什么情况需要个人档案
  • 现金流量表季度报表本期金额
  • 购买水果属于什么费用
  • 上年多做收入今年可以直接冲减吗
  • 工程款转入冻结账户能拿回
  • 进项税额转出有什么影响
  • 音乐茶座取什么名字好呢
  • 白酒销售环节交消费税吗
  • 企业租赁集体土地种植经济林如何补偿
  • 有现金折扣方式有哪些
  • 充值给予的优惠怎么用
  • 先转款后开票会计分录
  • 用外购存货投资分录怎么写?
  • 多交的季度所得税怎么算
  • 应付账款少记违反什么认定
  • 企业职工报销签单怎么写
  • 社保和个税怎么个对应法
  • 进项税额转出报税填哪个表
  • 企业税收负担率一般达到多少算正常
  • 给员工购买口罩计入什么费用
  • 企业会计准则财务报表本期金额和上期金额
  • 公司账户转入另一个公司的投资款怎么做账?
  • 固定资产处理收入计入什么科目
  • 营业执照五证合一图片
  • 工程用的叉车计提折旧记到什么科目?
  • 社保不计提会计分录
  • 苹果mac os x 怎样打开DVD播放程序
  • 分配利润给股东怎么做分录
  • 无形资产入账包括增值税吗
  • bios怎么恢复出厂设置会怎么样
  • iphone6s显示4g却无法上网
  • 内部审计范围有哪些
  • 克拉莫16首
  • 瓦尔德内尔精彩
  • php的fopen
  • idea怎么运行前端vue项目
  • yarn install报错
  • Vue:element-ui中表格过长内容隐藏显示
  • php 图片上传
  • 门店装修费怎么记会计凭证
  • 覆盖的盖
  • magento后台无法登录解决办法的两种方法
  • php获取服务器ip和客户端ip的方法
  • 分公司要不要银行开户
  • mongodb用法
  • 应收处理的两大内容是什么
  • 一般纳税人涉及进项税额转出的有
  • 产权出典是啥意思
  • 申报表本期金额和上期金额
  • 以货物抵债的会计分录
  • 查定征收在哪一章
  • 新收入准则按照期间确认收入
  • 银行承兑汇票向银行申请贴现会计分录
  • 工程结算一般由什么等方式
  • 水电费收据能证明什么??
  • 如何开具发票?
  • 固定资产改变用途折旧处理
  • mysql查询包含
  • Windows Server 2003网络负载均衡如何实现
  • 让windows server 2003 32位支持8G内存大内存
  • 手动ghost恢复
  • win8系统怎么清理缓存
  • win10笔记本不显示桌面
  • ubuntu20.0安装
  • Win7电脑自动关机是什么原因
  • win10系统怎么设置屏幕
  • win10按prtsc没反应
  • css中文名称
  • perl语言基本命令
  • 会用python
  • jquery中什么方法用于模拟光标悬停事件
  • android的r
  • python socket server
  • 出口退税是否缴纳所得税
  • 重庆国税电子税务局手机版
  • 重庆税务局发票作废怎么处理
  • 耕地占用税免税项目需要计入计税依据吗
  • 杭州文明城市几连冠
  • 法治税务建设工作思路
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设