【发布时间】:2013-10-25 22:25:58
【问题描述】:
我创建了当屏幕上出现一行图标时运行的效果。
动画本质上是在改变div 的padding,从而产生图标脉冲的效果。
它在除 Chrome 之外的所有浏览器中都能完美运行(令人惊讶!)。由于某种原因,Chrome 在动画时会摆动每个图标下的文本。我使用了padding,希望它只会影响div 中的内容(使用box-sizing: border-box 模型)。
我确实为它编写了一个修复程序,该修复程序在 Chrome 中有效,但随后破坏了 Safari 中的布局。
所以我不确定是否可以修复 Chrome 中的抖动问题,或者是否可以更改修复以帮助 Safari。
Here's the link to the page as it is at the moment,没有 jQuery 修复。它在JS文件中,但被注释掉了。
这是运行动画的代码,修复在这里,只是注释掉了:
$('.wrapper').scroll(function(e) {
var tTop = target.offset().top;
var tTopOffset = tTop+target.height();
if( tTop < height ) {
if (flag) {
targetDiv.animate({
opacity: 1
}, 500);
targetDiv.each(function(i){
// FIX breaks on safari, but fixes issue in Chrome...
// targetDiv.css('height', targetDivHeight);
$(this).delay((i++) * 900).animate({
padding: '0em'
}, 400);
$(this).animate({
padding: '0.5em'
}, 400);
});
flag = false
}
} else {
targetDiv.css('opacity', '0');
flag = true;
}
});
【问题讨论】:
-
为什么要设置填充动画?用 transform: scale(1.3); 为图标设置动画不是更好吗?例如?
-
我想如果我为填充设置动画,它不会影响它下面的任何元素,因为它会被限制在包含的 div 中,因为盒子模型。但由于某种原因,Chrome 不玩了。
-
这正是变换比例的用途,在不干扰布局的情况下为元素设置动画。
标签: javascript jquery css google-chrome