首先看看演示效果

代码, 函数参数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. swift_023(Swift 的继承)
  2. 13成都邀请赛 1005 Naive and Silly Muggles
  3. 虚拟机上的ubuntu安装vmware tools
  4. 静态static关键字概述
  5. java api中最常用的五个包_java 5 个常用的api包
  6. html下拉列表初始值不显示,javascript – 使用innerhtml显示下拉列表文本而不是值...
  7. 《Cracking the Coding Interview》——第11章:排序和搜索——题目7
  8. 收藏 | 一文读懂机器学习中的正则化
  9. ajax传递字符,Ajax怎么传递特殊字符的数据
  10. Spring boot上传文件(图片)到阿里云OSS(直接上传到应用服务器)
  11. Numpy,Pandas,Matplotlib
  12. 对PostgreSQL中bufmgr.c 中 bufs_to_lap的初步理解
  13. 163个人域名邮箱申请,163个人邮箱怎么注册创建
  14. Kotlin是如何帮助你避免内存泄漏的?
  15. 使用C++开发的NES(FC)模拟器
  16. 蓝桥杯2013第四届 第四题39级台阶
  17. [HTML/CSS]Flex 布局中space-evenly 的兼容性
  18. 云桌面-ThinVirt3-EXP操作手册(一)云桌面系统安装
  19. 关于openpyxl里“合并单元格和插入新行”与“冻结窗格”的坑
  20. 微星主板开启安全启动以更新win11教程

热门文章

  1. android 混淆 去掉log,Android去掉/混淆Log,反编译都看不到
  2. Unity Android 前台后台切换判断
  3. IP 地址是如何被创建和管理的?
  4. dayjs小插件怎么修改时间戳
  5. 什么编程语言可以与 Excel 结合?
  6. vue过滤器日期倒计时
  7. Python实用数据分析哪些地方,十一黄金周值得一去!
  8. Android NDK图形API篇
  9. 将季节性地下水赋存异常和包气带土壤水分作为华北平原太行山山前地区降水补给的指标
  10. jquery 获取checkbox状态