2015-09-07 70 views

回答

1

試試'scale': 'box'選項爲scale的效果。

規模(默認: 「雙方」)

類型:String

該元素的區域將被調整: 「兩個」, 「盒子」, 「內容」。 Box調整元素的邊框和內邊距;內容調整元素內部的任何內容。

正如你box DIV實際上沒有任何content,或許,這是不必要的轉變的原因...

此致fiddle與修改。

另一個fiddle變體。

Upd。

正如您在第二個小提琴中可以看到的,您可以爲每個動畫階段(效果)使用單獨的函數。所以,只要在最外相挑當前框的大小,並與榮幸電流/初始框的大小各下一階段的規模計算百分比,如下列:

var box = $('.box'); 
box.data('size', {'w': box.width(), 'h': box.height()}); 
box.show(scale_effect(box, 100, 250, function() { 
    box.stop().effect(scale_effect(box, 80, 100, function() { 
     box.stop().effect(scale_effect(box, 100, 100, function() { 
      box.stop().effect(scale_effect(box, 90, 100, function() { 
       box.stop().effect(scale_effect(box, 100, 100, function() { 
       })); 
      })); 
     })); 
    })); 
})); 

function scale_effect(box, percent, duration, complete) { 
    box = $(box); 
    var size = box.data('size'); 
    var absolutePercent = percent * size.w/box.width(); 
    console.log(absolutePercent); 
    return { 
     'effect': "scale", 
     'percent': absolutePercent, 
     'scale': 'box', 
     'duration': duration, 
     'queue': false, 
     'complete': complete 
    }; 
} 

fiddle預覽。

而且here's一些漂亮的變異與語法如下:

$('.box').bouncedScale([ 
    {'percent': 100, 'duration': 250}, 
    {'percent': 80, 'duration': 100}, 
    {'percent': 100, 'duration': 100}, 
    {'percent': 90, 'duration': 100}, 
    {'percent': 100, 'duration': 100}, 
]); 
+0

這是一個有趣的解決方案,我很欣賞你的提交,但不幸的是導致收縮在每次迭代如果圖像是奇數的元素像素(舍入問題)。您可以通過使用一個這樣的圖像然後重複縮放來在實踐中看到這一點。有沒有什麼方法可以精確地重置元素的像素,而不使用基於百分比的方法? – daveycroqet

+0

@daveycroqet,請參閱更新 – ankhzet

+0

@ahnkhzet,感謝您的更新。你正在做一些非常棒的工作,所以我給你的答案讓我足夠接近,以至於我已經將你的解決方案修改爲可以使用它的東西。但是所有這些函數都遭受相同的舍入誤差,這些誤差在幾次迭代後不能正確保持高度/寬度。我認爲最好的解決方案是可能只是使用不會導致瀏覽器誤差的數學運算,這是我最終做的。 – daveycroqet