//把 任意对象 的 任意数值属性 改变为 任意的目标值function animate(obj, json, fn) {clearInterval(obj.timer);obj.timer = setInterval(function () {var flag = true;for (var k in json) {if (k === "opacity") {//opacity要特殊处理//opacity没有单位 参与运算自动转换成数值 所以不用parsetInt//取值范围 0-1 0.1 0.33 33 为了让以前的计算公式生效 要扩大100倍var leader = getStyle(obj, k) * 100;var target = json[k] * 100;var step = (target - leader) / 10;step = step > 0 ? Math.ceil(step) : Math.floor(step);leader = leader + step;obj.style[k] = leader / 100;//opacity没有单位} else if (k === "zIndex") {obj.style.zIndex = json[k];//层级不需要渐变 直接设置即可} else {var leader = parseInt(getStyle(obj, k)) || 0;var target = json[k];var step = (target - leader) / 10;step = step > 0 ? Math.ceil(step) : Math.floor(step);leader = leader + step;obj.style[k] = leader + "px";}if (leader != target) {flag = false;}}if (flag) {clearInterval(obj.timer);if (fn) {fn();}}}, 15);}//全部属性都到达目标值才能清空function getStyle(obj, attr) {if (window.getComputedStyle) {return window.getComputedStyle(obj, null)[attr];} else {return obj.currentStyle[attr];}}

转载于:https://www.cnblogs.com/lsy0403/p/5882786.html

javascript动画函数封装(升级版)相关推荐

  1. JavaScript 之 网页特效篇(offset系列、client系列、scroll系列、动画函数封装、常见网页特效)

    网页特效 1.元素偏移量 offset 系列 offset 翻译过来就是偏移量,我们使用offset系列相关属性可以动态的得到该元素的位置(偏移).大小等. 获得元素距离带有定位父元素的位置 可以获取 ...

  2. 05【JS 高级】-【PC端网页特效】元素偏移量 offset 系列, 元素可视区 client 系列, 元素滚动 scroll 系列, 动画函数封装, 常见网页特效案例

    04[JS 高级]-[PC端网页特效] 学习内容: 元素偏移量 offset 系列, 元素可视区 client 系列, 元素滚动 scroll 系列, 动画函数封装, 常见网页特效案例 1. 元素偏移 ...

  3. 简单的动画函数封装(2)

    <div></div><!-- <span></span> --><button class="btn1"> ...

  4. 最终的动画函数封装(2)

    <button>点击触发1</button><button>点击触发2</button><div></div> <styl ...

  5. 简单的动画函数封装(1)

    //创建简单的动画函数封装效果(目标对象,目标位置) function animate(obj,target){var id = setInterval(function(){if(obj.offse ...

  6. PC端网页特效二:mouseenter 和 mouseover 的区别、动画函数封装

      目录 5.mouseenter 和 mouseover 的区别 6.动画函数封装 动画实现原理 简单动画函数封装 动画函数给不同元素记录不同定时器 缓动效果原理 动画函数多个目标值之间移动 缓动函 ...

  7. 移动端 transition动画函数的封装(仿Zepto)以及 requestAnimationFrame动画函数封装(仿jQuery)...

    移动端 css3 transition 动画 ,requestAnimationFrame 动画  对于性能的要求,h5优先考虑: 移动端 单页有时候 制作只用到简单的css3动画即可,我们封装一下, ...

  8. javascript深拷贝函数封装

    在javascript,python这种带引用类型的高级程序设计语言中,很容易出现浅拷贝而导致错误. 本篇文章,我浅述一下我对js中深拷贝函数封装的思考. 思路很简单,封装一个递归函数,终止条件是'不 ...

  9. 动画函数封装 —— 筋头云图案跟随鼠标移动

    要求 利用动画函数做动画效果 思路 原先筋斗云的起始位置是0 鼠标经过某个 li,把当前 li 的 offsetLeft 位置做为目标值即可 鼠标离开某个 li,就把目标值设为 0 如果点击了某个 l ...

最新文章

  1. IC/FPGA大疆笔试题分析(预分析)
  2. Trie树详解及其应用
  3. 韩国讨论到 2020 年拥抱开源操作系统
  4. Matlab计时函数的使用
  5. 黑客高手对决常用术语及行规,一般人我不告诉他
  6. myBatis xml if、where、if-else?、foreach 心得
  7. mysql show 命令_mysql show 相关命令
  8. python 3.5.2页面_Python 3.5.2实现websocket服务端
  9. [react-router] hashHistory 和 browserHistory 的区别
  10. codeforces 707D-(DFS+bitset)
  11. 玩转Git三剑客01:Git基础
  12. matlab2c使用c++实现matlab函数系列教程-sinh函数
  13. ecshop中$user对象
  14. 相机dc内置滤镜 千奇百怪不离其踪 漫谈数码相机内置滤镜
  15. Landsat 8数据介绍
  16. html表单中按钮居中,Ant design StepsForm中如何使底部按钮居中
  17. python爬取网页数据出现中文乱码解决办法
  18. 神经网络机器翻译(一)
  19. 168640-82-2,Azide-PEG4-Tos含有叠氮化物(N3)基团和对甲苯磺酰基的杂功能交联剂
  20. android5.1.1版本怎么升级,Android 5.1 悄悄升级 版本号升至 LMY47E

热门文章

  1. SQL取出每个产品的Top n 条记录
  2. 基于MeanShift的目标跟踪算法及实现
  3. 2016年,C语言该怎样写
  4. 苹果手机(ios)拍照上传图片旋转90度问题---java后台处理
  5. 《食堂远程下单系统》需求规格说明书
  6. 3.菜鸟教你一步一步开发 web service 之 axis 服务端创建
  7. C语言初学者代码中的常见错误与瑕疵(9)
  8. 开启Windows7多用户远程桌面
  9. camera理论基础和工作原理【转】
  10. Eclipse Collections:让Java Streams更上一层楼