jQuery UI.hide(‘slide’)具有边距的奇怪行为

前端之家收集整理的这篇文章主要介绍了jQuery UI.hide(‘slide’)具有边距的奇怪行为前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用jQuery UI的.hide(‘slide’)动画的一些元素.问题是当我在这些元素上指定一个边距时,动画似乎会下降,一旦完成,就返回原来的位置.如果我从这些元素中删除边距,问题就不复存在了.

I’ve set up a simplified example fiddle showing the problem

CSS

div.score {
    width: 32px;
    height: 32px;
    background-color: blue;
    color: white;
    text-align: center;
    margin: 10px;
    padding-top: 6px;
}

jQuery的

$('div.score').click(function() {
    var $this = $(this);
    $this.hide('slide',{ direction: 'right' },250,function() {
        $this.show('slide',{ direction: 'left' },250)
             .text(parseInt($this.text(),10) + 1);
    });
});

HTML

<div class="score">0</div>
<div class="score">0</div>

有没有人可以解释这是什么原因,是一个bug吗?

解决方法

div.ui-effects-wrapper在动画(jQuery UI)之前包装你的元素div.score.脚本使用outerHeight(true)方法计算其高度,包括边距为 http://api.jquery.com/outerHeight.

所以div.ui-effects-wrapper height是div.score height div.score margin – > 52px

但是您的元素仍然具有边距规则,因此实际的包装高度为52px 20px = 72px.

我认为这是一个错误.

你可以使用这个版本(用简单的包装器)
http://jsfiddle.net/vpetrychuk/s5U38/31/

猜你在找的jQuery相关文章