使用jQuery完成动画后,是否可以计算元素的大小?我的简化示例是:

<style>
  .brick
  {
    transition: all 0.4s ease-in-out;
  }
  .large
  {
    width: 400px;
    height: 400px;
  }
  .small
  {
    width: 200px;
    height: 200px;
  }
</style>

<script>
  $('.brick').removeClass('small').addClass('large');
  $('.brick').height(); // returns 200px but desired 400px
  $('.brick').width();  // returns 200px but desired 400px
</script>

我等不及要等到动画完成后再获得尺寸,而且无法在JS中对任何尺寸进行硬编码。有任何想法吗?

编辑:大小字的错别字

最佳答案

您可以只创建一个具有相同类且没有过渡的元素,并获取该元素的尺寸,因为这与过渡在现有元素上结束时相同:

var brick = $('<div />', {
                          'class':'brick large',
                           style :'transition:none; left: -9999px;'
                         }
            ).appendTo('body');

var w = brick.height()
var h = brick.width();

brick.remove();

FIDDLE

09-25 22:11