1. //获取任意一个元素的任意一个属性的当前的值---当前属性的位置值
  2. function getStyle(element, attr) {
  3. return window.getComputedStyle ? window.getComputedStyle(element, null)[attr] : element.currentStyle[attr] || 0;
  4. }
  1. //变速动画函数封装增加任意多个属性和回调函数及层级还有透明度
  2. //element元素 json对象 存储属性与值 fn为回调函数
  3. function animate(element, json, fn) {
  4. //清理定时器
  5. clearInterval(element.timeid);
  6. //设置定时器
  7. element.timeid = setInterval(function () {
  8. //假设全部到达目标
  9. var f = true;
  10. //循环去获取传入的数据
  11. for (var i in json) {
  12. //判断传入的值 是不是opacity
  13. if (i == 'opacity') {
  14. //获取当前opacity的值 并且放大100倍
  15. var current = getStyle(element, i) * 100;
  16. //把目标值也放大100倍
  17. var target = json[i] * 100;
  18. //移动的步数
  19. var step = (target - current) / 10;
  20. //判断是不是为0
  21. step = step > 0 ? Math.ceil(step) : Math.floor(step);
  22. //移动后的位置
  23. current += step;
  24. //移动元素属性
  25. element.style[i] = current / 100;
  26. //判断属性是不是zIndex
  27. } else if (i == 'zIndex') {
  28. //直接设置zIndex
  29. element.style[i] = json[i];
  30. } else {
  31. //普通属性获取(转化成数字)
  32. var current = parseInt(getStyle(element, i));
  33. //目标属性值
  34. var target = json[i]
  35. //移动的步骤(渐变)
  36. var step = (target - current) / 10;
  37. //判断移动的值取整
  38. step = step > 0 ? Math.ceil(step) : Math.floor(step);
  39. //移动后的位置
  40. current += step;
  41. //移动元素
  42. element.style[i] = current + 'px';
  43. }
  44. //只要有一个没达到目标就设置F为false
  45. if (current != target) {
  46. f = false;
  47. }
  48. //目标到达 清理定时器 判断有没有回调函数
  49. if (f) {
  50. clearInterval(element.timeid);
  51. if (fn) {
  52. fn();
  53. }
  54. }
  55. }
  56. console.log("目标:" + target + ",当前:" + current + ",每次的移动步数:" + step);
  57. }, 20)
  58. }

js 变速动画函数的更多相关文章

  1. js变速动画函数封装 回调函数及层级还有透明度

    //点击按钮,改变宽度到达一个目标值,高度到达一个目标值 //获取任意一个元素的任意一个属性的当前的值---当前属性的位置值 function getStyle(element, attr) { re ...

  2. 从零开始学 Web 之 BOM(三)offset,scroll,变速动画函数

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  3. 原生JS实现动画函数的封装

    封装了一个JS方法,支持元素的基本动画:宽.高.透明度...等,也支持链式动画和同时运动. 获取元素的属性的函数并进行了兼容性处理: function getStyle(obj, attr) { if ...

  4. JS---封装缓动(变速)动画函数---增加多个任意多个属性

    封装缓动动画函数---增加多个任意多个属性 在原来缓动动画函数,增加任意一个属性的基础上,做了如下改变 1. 原来function animate(element, attr, target),三个变 ...

  5. JS---封装缓动(变速)动画函数---增加任意一个属性

    封装缓动(变速)动画---增加任意一个属性 1. 本来的变速动画函数,是获取特定的属性(之前案例是向右移动,所以获取的是left属性) 2. 现在改变为,获取任意一个属性,使其移动到指定的target ...

  6. JS---最终版本--封装缓动(变速)动画函数---增加任意多个属性&回调函数&层级&透明度

    封装缓动(变速)动画函数---增加任意多个属性&回调函数&层级&透明度 相较之前的,增加了2个判断,第一个判断是不是透明度,第二个判断是不是zindex, 都不是,就只是普通属 ...

  7. JS---封装缓动(变速)动画函数---增加任意多个属性&增加回调函数

    封装缓动(变速)动画函数---增加任意多个属性&增加回调函数 回掉函数fn,在所有元素到达目的位置后,判断是否传入一个函数,有就调用 if(fn){fn()}; 这样一次点击,产生多个动画 & ...

  8. js进阶 13 jquery动画函数有哪些

    js进阶 13 jquery动画函数有哪些 一.总结 一句话总结: 二.jquery动画函数有哪些 原生JavaScript编写动画效果代码比较复杂,而且还需要考虑兼容性.通过jQuery,我们使用简 ...

  9. js 封装一个均速动画函数

    //动画函数---任意一个元素移动到指定的目标位置 //element为元素 target为位置 function carToon(element, target) { //设置一个定时器让他循环去增 ...

随机推荐

  1. MySQL基础数据类型

    一 介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 详细参考: http://www.runoob.com/mysql/mysql-data ...

  2. 移动端开发:iOS与Android平台上问题列表

    要CSS伪类 :active 生效,只需要给 document 绑定 touchstart 或 touchend 事件 <style> a { color: #000; } a:activ ...

  3. JavaScript中实现DI的原理

    什么是依赖注入 按照上面图的流程中我们可以知道我们需要实现这么几件事: 提供一个服务容器 为目标函数注册需要的依赖 获取目标函数注册的依赖项 通过依赖项来查询对应服务 将获取的依赖项传入目标函数 提供 ...

  4. Github上600多个iOS开源项目地址

    将Github上600多个iOS开源项目进行分类并且有相应介绍,小伙伴们快来看呀 地址:http://github.ibireme.com/github/list/ios/

  5. 部署node.js的开发环境

    1.进入Node.js的官方网站下载安装包: http:nodejs.org 2.安装后打开cmd的dos窗口(在path环境变量中查看到有nodejs说明安装成功): 3.运行node.

  6. Java Collections Framework知识结构目录

    The core collection interfaces are the foundation of the Java Collections Framework. The Java Collec ...

  7. QT5.3.1 Quick 开发(二) 项目类型的选择

    作为一个转行QT开发的新手,面对基于QML的开发时候 看到很多的项目类型感到很困惑,不知道应该怎么选择.如图: 经过研究发现QT widgets Application.QtQuick Applica ...

  8. 用两个栈实现队列(C++ 和 Python 实现)

    (说明:本博客中的题目.题目详细说明及参考代码均摘自 “何海涛<剑指Offer:名企面试官精讲典型编程题>2012年”) 题目 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 a ...

  9. sqlserver2008 insert语句性能

    在sqlserver2008中“新建查询”,执行批量添加语句的执行时间: declare @i int ) begin INSERT INTO [xxx].[dbo].[北京万奇亚讯科技_QueryL ...

  10. Oracle案例04——TNS-12547: TNS:lost contact

    Oracle数据库服务器DG从库重启后,无法完成数据同步,具体报错信息如下: 一.报错信息 alter log报错 ****************************************** ...