我有一个垂直 + 水平居中的 div,当使用 CSS 动画调整大小时,它会显示不稳定、摇晃的运动。
div 绝对定位,具有固定的宽度/高度和负边距。
动画本身只是在两组不同的固定宽度/高度和负边距值之间切换,并设置了自定义过渡属性。
几乎感觉负边距以不同的速度在宽度和高度上进行动画处理。
我尝试使用 jQueryanimate()
而不是更改使用的 CSS 过渡(线性、夸脱等),css()
但它们产生相同的结果。
如果它适用于 IE >= 8,是否有人能够解释为什么会发生这种情况,并且可能是一种更好的方法来做到这一点?
示例:http:
//jsfiddle.net/p4B3S/1/
HTML
<div class="outer">
<div class="inner">
+
</div>
</div>
<button>toggle</button>
CSS:
.outer {
/* easeOutQuart */
-webkit-transition: all 750ms cubic-bezier(0.165, 0.840, 0.440, 1.000);
-moz-transition: all 750ms cubic-bezier(0.165, 0.840, 0.440, 1.000);
-ms-transition: all 750ms cubic-bezier(0.165, 0.840, 0.440, 1.000);
-o-transition: all 750ms cubic-bezier(0.165, 0.840, 0.440, 1.000);
transition: all 750ms cubic-bezier(0.165, 0.840, 0.440, 1.000);
position: absolute;
width: 200px;
height: 200px;
left: 50%;
top: 50%;
margin-left: -100px;
margin-top: -100px;
outline: 1px solid red;
}
.inner {
position: absolute;
width: 40px;
height: 40px;
top: 50%;
left: 50%;
margin-left: -20px;
margin-top: -20px;
text-align: center;
line-height: 40px;
outline: 1px solid blue;
}
button {
width: 100px;
height: 50px;
}
jQuery
$button = $('button');
$outer = $('.outer');
$button.toggle(function() {
$outer.css({
'width': '100px',
'height': '100px',
'margin-left': '-50px',
'margin-top': '-50px'
});
}, function() {
$outer.css({
'width': '200px',
'height': '200px',
'margin-left': '-100px',
'margin-top': '-100px'
});
});