• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
_小女人
博客园    首页    新随笔    联系   管理    订阅  订阅

缓动动画(透明度)

function animate(obj, json, fn) {
clearInterval(obj.timer);
obj.timer = setInterval(function () {
var flag = true;

for (var k in json) {
if (k == "opacity") {
var target = json[k] * 100;
var leader = Math.round(getStyle(obj, k) * 100) || 100;//因为透明度本身不带有单位 所以不用parseInt了,但是在做动画的时候 会除不尽 所以要取整
//console.log(leader)
} else {
var target = json[k];
var leader = parseInt(getStyle(obj, k)) || 0;//10px 10
}

var step = (target - leader) / 10;
step = step > 0 ? Math.ceil(step) : Math.floor(step);
leader = leader + step;
if (k == "opacity") {
obj.style[k] = leader / 100;
//IE8 filter:alpha(opacity=x);
obj.style.filter = "alpha(opacity=" + leader + ")"
console.log(obj.style.filter)
} else if (k == "zIndex") {
obj.style.zIndex = target;
}
else {
obj.style[k] = leader + "px";
}


if (leader != target) {
flag = false;
}
}
if (flag) {
clearInterval(obj.timer);
if (fn) {
fn();
}
}
}, 30)

}

function getStyle(obj, attr) {
if (obj.currentStyle) {
return obj.currentStyle[attr];
} else {
return window.getComputedStyle(obj, null)[attr];
}
}

posted @ 2016-04-25 14:22  _小女人  阅读(319)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3