//获取任意一个元素的任意一个属性的当前的值---当前属性的位置值
function getStyle(element, attr) {
return window.getComputedStyle ? window.getComputedStyle(element, null)[attr] : element.currentStyle[attr] || 0;
}
//变速动画函数封装增加任意多个属性和回调函数及层级还有透明度
//element元素 json对象 存储属性与值 fn为回调函数
function animate(element, json, fn) {
//清理定时器
clearInterval(element.timeid);
//设置定时器
element.timeid = setInterval(function () {
//假设全部到达目标
var f = true;
//循环去获取传入的数据
for (var i in json) {
//判断传入的值 是不是opacity
if (i == 'opacity') {
//获取当前opacity的值 并且放大100倍
var current = getStyle(element, i) * 100;
//把目标值也放大100倍
var target = json[i] * 100;
//移动的步数
var step = (target - current) / 10;
//判断是不是为0
step = step > 0 ? Math.ceil(step) : Math.floor(step);
//移动后的位置
current += step;
//移动元素属性
element.style[i] = current / 100;
//判断属性是不是zIndex
} else if (i == 'zIndex') {
//直接设置zIndex
element.style[i] = json[i];
} else {
//普通属性获取(转化成数字)
var current = parseInt(getStyle(element, i));
//目标属性值
var target = json[i]
//移动的步骤(渐变)
var step = (target - current) / 10;
//判断移动的值取整
step = step > 0 ? Math.ceil(step) : Math.floor(step);
//移动后的位置
current += step;
//移动元素
element.style[i] = current + 'px';
}
//只要有一个没达到目标就设置F为false
if (current != target) {
f = false;
}
//目标到达 清理定时器 判断有没有回调函数
if (f) {
clearInterval(element.timeid);
if (fn) {
fn();
}
}
}
console.log("目标:" + target + ",当前:" + current + ",每次的移动步数:" + step);
}, 20)
}

最新文章

  1. ProxyPattern
  2. POJ 1274 The Perfect Stall、HDU 2063 过山车(最大流做二分匹配)
  3. c10k问题及其解决方案
  4. Tomcat Nginx cluster note
  5. (圆形imageview 类似qq头像)---》(ps:引用第三库APAvatarImageView>
  6. 基于IAccessible接口的QQ窗口信息获取的实现
  7. codeforces 251A Points on Line(二分or单调队列)
  8. 浅析ConcurrentHashMap
  9. 洛谷 P3928 Sequence
  10. iOS voip电话和sip软电话 --网络电话
  11. docker使用方式
  12. 使用==操作符比较命令行参数args[0]和字符串返回“Invalid type"
  13. CodeForce VKcup A
  14. set集合遍历
  15. paramiko不能通过cd改变路径分析
  16. redis队列及多线程应用
  17. SpringMVC配置全局日期转换器,处理日期转换异常
  18. String、StringBuffer与StringBuilder区别
  19. Ubuntu16.04最快捷搭建小型局域网Git服务器
  20. HDU 3378

热门文章

  1. C#——DataGridView选中行,在TextBox中显示选中行的内容
  2. Distributed TensorFlow
  3. mybatis支持的jdbc类型
  4. Android学习——自定义控件(二)
  5. SQLite入门(二)读写二进制数据
  6. Nginx 性能参数优化
  7. Microsoft.Exchange 发邮件
  8. 爬虫入门之反反爬虫机制cookie UA与中间件(十三)
  9. Deep Learning Drizzle
  10. Hibernate关于父类子类的映射