【发布时间】:2012-03-19 06:15:56
【问题描述】:
我正在尝试编写一个可以从 DOM 中删除元素的函数,但是我遇到了一个我无法解决的问题。
代码如下所示:
function closeMessage(message) {
var height = $(message).outerHeight();
$(message).fadeTo("fast", 0.01).animate({marginTop: -height, marginBottom: 0}, function(){
$(message).remove();
});
}
变量message 是要移除的元素。在 CSS 中,我已将 margin-top 和 margin-bottom 分配给消息元素。
执行上述函数时,消息元素的不透明度降低到 0.01%(= 几乎不可见但仍然存在),然后负边距会产生消息元素下方的内容向上滑动的效果。之后在回调中,消息元素从 DOM 中移除。
问题是,messages-elements 下方的内容会像轻微的颠簸一样将最后几个像素跳到顶部。仅当存在多个消息框时,这种震动才明显。设置的边距越大,它也变得越明显。如您所见,我已尝试使用marginBottom: 0 解决问题,但它不起作用。
我还尝试了 jQuery 的不同 height(); 函数,例如 outerHeight();、outherHeight(true); 和 innerHeight();,但这并没有解决问题。
所以我的问题是:上面的代码有问题吗?为什么在动画的最后阶段会有那么小的“跳跃”?这是正常行为吗?
【问题讨论】:
标签: jquery jquery-animate height flicker