浅谈原生JS实现jQuery的animate()动画示例

发布时间 - 2026-01-11 00:03:19    点击率:

本文介绍了浅谈原生JS实现jQuery的animate()动画示例,希望此文章对各位有所帮助。

参数介绍:

obj
执行动画的元素
css JSON数值对,形式为“{属性名: 属性值}",指要执行动画的书序及其对应值
interval
属性每执行一次改变的时间间隔
speedFactor 速度因子,使动画具有缓冲效果,而不是匀速不变(speedFactor为1)
func 执行完动画后的回调函数

注意:

必须为每一个元素分别添加一个定时器,否则会互相影响。

cur != css[arr]判断是否每一个属性已经达到目标值。只有所有属性都达到目标值,才会清除定时器,flag的作用是防止某个属性第一个达到目标值但还有其他属性没有达到目标值的情况下清除定时器。因此,在每次改变前初始化flag为true,只要遇到一个没有达到目标的属性,就将flag置为false,直至所有属性达到目标值才清除定时器。

属性值opacity的值有小数,所以需要特殊处理: Math.ceil(speed)和Math.floor(speed)以及* 100和 / 100操作。

function animate(obj, css, interval, speedFactor, func) { 
  clearInterval(obj.timer); 
  function getCss(obj, prop) { 
    if (obj.currentStyle) 
      return obj.currentStyle[prop]; // ie 
    else  
      return document.defaultView.getComputedStyle(obj, null)[prop]; // 非ie 
  } 
  obj.timer = setInterval(function(){ 
    var flag = true; 
    for (var prop in css) { 
      var cur = 0; 
      if(prop == "opacity")  
        cur = Math.round(parseFloat(getStyle(obj, prop)) * 100); 
      else  
        cur = parseInt(getStyle(obj, prop)); 
      var speed = (css[prop] - cur) * speedFactor; 
      speed = speed > 0 ? Math.ceil(speed): Math.floor(speed); 
      if (cur != css[prop]) 
        flag = false; 
      if (prop == "opacity") { 
        obj.style.filter = "alpha(opacity : '+(cur + speed)+' )"; 
        obj.style.opacity = (cur + speed) / 100; 
} 
      else  
        obj.style[prop] = cur + speed + "px"; 
    } 
    if (flag) { 
      clearInterval(obj.timer); 
      if (func) 
        func(); 
    } 
  }, interval); 
} 
var li = document.getElementsByTagName("li"); 
for(var i = 0; i < li.length; i ++){ 
  li[i].onmouseover = function(){ 
    animate(this, {width: 100, opacity: 0.5}, 10, 0.01, function(){ 
      alert("Finished!"); 
    }); 
  } 
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# 原生js实现animate  # jquery  # animate  # 原生js  # 原生JS封装animate运动框架的实例  # jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件  # 原生js实现jquery函数animate()动画效果的简单实例  # 原生js仿jquery animate动画效果  # js实现类似jquery里animate动画效果的方法  # js动画(animate)简单引擎代码示例  # 用js实现的模拟jquery的animate自定义动画(2.5K)  # javascript 中动画制作方法 animate()属性  # 第一个  # 才会  # 的书  # 就将  # 浅谈  # 则会  # 回调  # 大家多多  # 而不是  # 判断是否  # 情况下  # arr  # cur  # func  # alert  # speedFactor  # false  # width  # Math  # opacity 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 微信小程序 wx.uploadFile无法上传解决办法  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  Laravel如何实现用户密码重置功能?(完整流程代码)  MySQL查询结果复制到新表的方法(更新、插入)  Laravel如何使用Vite进行前端资源打包?(配置示例)  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  在线制作视频网站免费,都有哪些好的动漫网站?  中国移动官方网站首页入口 中国移动官网网页登录  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  佛山企业网站制作公司有哪些,沟通100网上服务官网?  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  高防服务器:AI智能防御DDoS攻击与数据安全保障  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  如何在七牛云存储上搭建网站并设置自定义域名?  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  香港服务器建站指南:免备案优势与SEO优化技巧全解析  如何在Windows虚拟主机上快速搭建网站?  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  ,南京靠谱的征婚网站?  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  Python图片处理进阶教程_Pillow滤镜与图像增强  Bootstrap CSS布局之列表  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  如何快速生成ASP一键建站模板并优化安全性?  googleplay官方入口在哪里_Google Play官方商店快速入口指南  详解MySQL数据库的安装与密码配置  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  简历没回改:利用AI润色让你的文字更专业  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  EditPlus中的正则表达式实战(5)  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  如何用VPS主机快速搭建个人网站?  使用spring连接及操作mongodb3.0实例  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  JS实现鼠标移上去显示图片或微信二维码  三星、SK海力士获美批准:可向中国出口芯片制造设备  手机软键盘弹出时影响布局的解决方法