首先看看演示效果

代码, 函数参数obj为当前想要变动的元素, changeData为想要变动的种类, 例如, func为元素动作结束后想要处理的函数

例如向上面那个演示, 注意: opacity要乘以100, 原因见如下代码

var div = document.getElementsByClassName('demo')[0];startMove(div, {width:200 ,  height:200, left:100, top:100, opacity: 50}, function(){});
/*
* 运动函数模型*/function startMove(obj, changeData, func) {clearInterval(obj.timer);var iCurValue = 0;var iSpeed = 0;var bStop;obj.timer = window.setInterval(function () {bStop = true;//判断当前所有动作是否全部执行完毕for(var name in changeData) {console.log(name, changeData[name]);if(name === 'opacity') {//对透明度进行处理时注意要扩大倍数, 否则容易造成bugiCurValue = parseFloat(getStyle(obj, name)) * 100;}else {iCurValue = parseInt(getStyle(obj, name));}iSpeed = (changeData[name] - iCurValue) / 7;//缓冲运动效果if(iSpeed > 0) {iSpeed = Math.ceil(iSpeed);}else{iSpeed = Math.floor(iSpeed);}if(name === 'opacity') {obj.style.opacity = (iCurValue + iSpeed) / 100;         }else{obj.style[name] = iCurValue + iSpeed + 'px';}if(iCurValue !== changeData[name]) {bStop = false;}}if(bStop) {//整个动作执行完毕clearInterval(obj.timer);func();//当全部动作执行完毕之后, 执行回调函数.}}, 30);
}

原生js封装元素运动函数相关推荐

  1. 原生JS封装时间运动函数

    /*讲时间运动之前先给大家复习一下运动函数 通常大家都会写运动框架,一个定时器(Timer),一个步长(step 就是每次运动的距离),一个当前位置(current)一个目标位置(target),然后 ...

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

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

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

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

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

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

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

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

  6. 原生JS封装ajax方法

    http://blog.sucaijiayuan.com/article/89 jquery框架的ajax方法固然好用,但是假如某天我们的项目不能引入jquery或项目需求很简单,没有很多交互功能,只 ...

  7. js原生后代选择器_JavaScript DOM查询,原生js实现元素子节点的获取

    每个网页都是一个dom树,网页中所有的内容都是这个树上的一个节点.JavaScript的工作就是操作这些节点,对节点进行查增删改操作,或是给节点绑定事件. 网页 dom树 要操作dom节点,首先要获取 ...

  8. 原生js封装table组件

    使用原生js封装自己的table组件. 思路是通过设置参数,生成对应的表格dom; 源码如下:(初步实现) var XUi = {// table组件tableDom:{common:function ...

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

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

最新文章

  1. Open3d学习计划—高级篇 7(颜色映射)
  2. 高文院士:顶级AI人才缺乏,但不必搞全民运动,到处成立人工智能学院
  3. 数据结构第一次作业——抽象数据类型
  4. css常用样式汇总记录
  5. pl sql代码提示手动提示设置
  6. linux rpm 查找,Linux下 rpm 命令查询方法
  7. STL堆算法性能分析与优化方法(GCC4.4.2 stl_heap.h源代码分析与改进方案)
  8. linux命令--ldconfig和ldd用法
  9. 基本采样算法及Python实现
  10. redis通过lua脚本实现分布式锁
  11. 游戏植入广告获取收益
  12. pjsip 录音生成wav文件声音一直很小
  13. c语言 自动答题器,单片机原理作业—电子答题器(课程及设计).doc
  14. 【083】毛笔字在线生成器-在线生成几十种毛笔字
  15. Python连接MySQL数据库
  16. 智在未来,明年再聚--OFweek2018(第三届)中国高科技产业大会完美闭幕!
  17. Java总结IO之总集篇
  18. 邓俊辉数据结构学习心得系列——如何正确衡量一个算法的好坏
  19. 写运维实习生第五周实习周报,包括心得体会和下周计划,多于300字
  20. linux半夜三点半定时重启,linux 定时任务 crontab相关(三)

热门文章

  1. C++课程设计学生宿舍管理信息系统
  2. 用python3下载youku,bilibili等视频
  3. Navicat 导出链接中获取密码
  4. php调色板快捷键,Linux_制作简单实用的调色板工具,把如下代码加入body区域 - phpStudy...
  5. Firewall--防火墙设置(iptables,firewalld)
  6. el-table中label换行
  7. extends通配符
  8. C++入门_编程如此简单
  9. 网络安全自学笔记+岗位介绍
  10. react-native app:compileDebugJavaWithJavac错误解决