//获取非行内样式function getStyle(obj,attr){if(obj.currentStyle){return obj.currentStyle[attr];}else{return getComputedStyle(obj,1)[attr];}
}//运动框架
function sport(obj,json,fn){ //回调函数:把一个函数以一个参数的形式传递给另一个函数时,传递的这个参数就叫做回调函数//1. 清除上一次的计时器
    clearInterval(obj.timer);//2. 开启新的计时器obj.timer = setInterval(function(){//1. 设置开关var stop = true;//2. 遍历jsonfor(var attr in json){//1. 获取当前属性值//透明度和其它属性if(attr === 'opacity'){var cur = parseInt(parseFloat(getStyle(obj,attr)) * 100);}else{var cur = parseInt(getStyle(obj,attr));}//2. 计算速度var speed = (json[attr] - cur) / 8;// 0.75    // -0.75speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);//3. 判断属性是否到达目标值,没有到达,开关为falseif(cur != json[attr]){stop = false;}//4. 设置运动if(attr === 'opacity'){obj.style.opacity = (cur + speed) / 100;obj.style.filter = 'alpha(opacity=' + (cur + speed) + ')';}else{obj.style[attr] = cur + speed + 'px';}}//3. 停止计时器if(stop){clearInterval(obj.timer);if(typeof fn === 'function'){fn();}}},30)
}

转载于:https://www.cnblogs.com/PrayLs/p/10411252.html

原生JS封装运动框架。相关推荐

  1. animate用法 js原生_原生JS封装animate运动框架的实例

    如下所示: div { width: 100px; height: 100px; background-color: pink; position: absolute; left: 0; top: 5 ...

  2. js 封装ajax方法吗,原生JS封装ajax方法

    jquery框架的ajax方法固然好用,但是假如某天我们的项目不能引入jquery或项目需求很简单,没有很多交互功能,只需要ajax,这时引入jquery库会造成资源浪费,也会显得页面臃肿.这时我们就 ...

  3. 原生js封装cookie插件

    最近迷上了react,用react模拟之前的系统,做登录的时候,发现需要用到cookie,之前用的跟vue搭配的VueCookie,我就在想啊,react应该也会有相应的cookie插件吧!百度一下, ...

  4. 原生html中modal,基于原生JS封装的Modal对话框插件

    基于原生JS封装Modal对话框插件 原生JS封装Modal对话框插件,个人用来学习原理与思想,只有简单的基本框架的实现,可在此基础上添加更多配置项 API配置 //基本语法 let modal = ...

  5. 封装运动框架多个属性

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  6. 原生JS封装Ajax插件(同域jsonp跨域)

    2019独角兽企业重金招聘Python工程师标准>>> 抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢? 最近都在做原生JS熟悉的练习... 用原生Js封装了一个Ajax ...

  7. 原生Js封装的弹出框-弹出窗口-页面居中-多状态可选

    实现了一下功能: 1.title可自定义 可拖拽 2.width height可以自定义 3.背景遮罩和透明度可以自定义 4.可以自己编辑弹出框里的html 5.确定 取消按钮可选 调用方法: 1 P ...

  8. 用原生 JS 实现 MVVM 框架2——单向绑定

    上一篇写了实现 MVVM 框架的一些基本概念 本篇用代码来实现一个完整的 MVVM 框架 思考 假设有如下代码,data里面的name会和试图中的{{name}}--一一映射,修改data的值,会直接 ...

  9. H5移动端原生JS封装附件上传服务器

    本文主要通过原生的js封装附件上传upload.js.可成功内嵌钉钉,ios和安卓端可正常使用,支持单个.多个附件上传. 一.业务需求 封装原生JS附件上传,动态创建附件列表,可对附件列表进行删除和新 ...

最新文章

  1. js修改display_Vue.js从零开始——过渡 / 动画效果(2)
  2. oracle服务端用sql查看连接到数据库的IP
  3. Oracle学习:子查询 (sql 嵌套 sql)
  4. 游戏光线追踪往事:十年技术轮回
  5. 中国牙膏产业深陷 “氟中毒”?
  6. 雅可比旋转求解对称二维矩阵的特征值和特征向量
  7. 微机原理控制转移类指令
  8. 6-5-JSP动作元素
  9. 阿里云服务器linux系统上安装git版本控制系统
  10. 4 年创 40 亿美元业绩神话,比特币挖矿究竟有多赚钱?
  11. 一场改变你投资生涯的讨论:职业德州扑克手看交易
  12. Kaggle 比赛分类与学习资源整理
  13. iOS 各种坐标系对比
  14. 邮件服务系列之一基础原理
  15. 短视频APP测试要点
  16. Steam如何打开控制台
  17. 64位处理器_计算机基础:处理器
  18. 支付宝APP支付接口-PHP
  19. 后面尾缀-T、-X、-TX…分别表示的意思
  20. win11右键如何直接打开所有选项

热门文章

  1. myBatis association的两种形式
  2. EXCEL批量删除当前目录下所有工作薄的所有工作表的指定行
  3. vb中WindowsMediaPlayer的常用属性和方法
  4. 怎样构建深度学习模型?六步走,时刻小心过拟合 | 入门指南
  5. 绿幕通通扔掉 ੧ᐛ੭ | 谷歌AI实时「抠」背景
  6. Git提交遇到的第一个问题
  7. 【Part1】用JS写一个Blog(node + vue + mongoDB)
  8. 未来两年九大信息安全威胁
  9. 数据库表结构设计方法
  10. ASP.NET页面与IIS底层交互和工作原理详解(一)