2012-02-28 53 views
0

我有以下代碼:定心作用

http://jsfiddle.net/G8Ste/577/

但我想,而不是僅僅在右側和底部在各個方向去的效果。

我已經嘗試使用margin:0,auto和其他css和html樣式,以便將其與中心對齊,但它不起作用。

謝謝

+0

使用規模而不是http://docs.jquery.com/UI/Effects/Scale – mgraph 2012-02-28 15:01:44

+0

不能只使用jQuery來完成?不是jqueryUI?也可以使用「scale」功能。在你的前。它使用隱藏和效果 – 2012-02-28 15:05:19

+0

您只需要調整頂部/左側值以及寬度和高度。 – Archer 2012-02-28 15:06:11

回答

0

以下的jsfiddle將集中的另一內部並且被調整大小時,將所述父容器內停留了中心一個框。我認爲這是你試圖達到的效果。我使用負邊距來保持內框居中。無論您使用的是什麼高度/寬度,只需將邊距設置爲寬度/高度的一半即可。

http://jsfiddle.net/G8Ste/594/

編輯:

我更新了上面的jsfiddle處理相對大小。 mousedown函數內有2個變量,用於確定框的比例。 scaleDown是您想縮小到mouseDown的原始大小的百分比,並且放大比例是您想要在mouseUp上放大的原始大小的百分比。這應該適用於任何大小的盒子,因爲所有的值都是計算而不是硬編碼的。

http://jsfiddle.net/G8Ste/600/

EDIT2:

現在的代碼檢查,如果迅速多次點擊廣告時被動畫的框。該代碼將等待,直到先前的動畫完成再次動畫之前。

http://jsfiddle.net/G8Ste/601/

EDIT3:

http://jsfiddle.net/G8Ste/613/

再次更新,以使其更適應。我將代碼轉換爲名爲centeringEffect的插件。 。

用法

$( 'IMAGES')centeringEffect();

選項

按比例縮小:你想要的百分比將圖像按比例縮小到鼠標按下(默認值:0.6) 比例放大:你想要的百分比的圖像擴展到對mouseUp事件(默認值:。 6)

+0

偉大的例子!非常感謝 ! 你還可以使它使用「相對」的值,所以我們可以在函數中使用它?使用%作品的尺寸,但利潤率如何? – 2012-02-28 15:58:00

+0

讓我看看。我會相應更新 – 2012-02-28 16:06:29

+0

帖子已更新 – 2012-02-28 16:19:24

0

您正在使用擺動緩動效果。現有的盒子沒有緩解的效果,它具有你想要的行爲。 我看到的唯一方法是你自己編寫緩動效果,這是基於揮杆算法。

0

你需要動畫左側和頂部的利潤我想......是這樣的:

$('#myimage').mousedown(function() { 
    var img = $(this); 
    img.stop().animate({ 
     width: ['80px', 'swing'], 
     height: ['80px', 'swing'], 
     marginTop: ['20px', 'swing'], 
     marginLeft: ['20px', 'swing'], 
    }, 50, 'swing'); 
    $(document).one("mouseup", function(){ 
     img.stop().animate({ 
      width: ['150px', 'swing'], 
      height: ['150px', 'swing'], 
       marginTop: ['10px', 'swing'], 
       marginLeft: ['10px', 'swing'], 
     }, 150, 'swing', function() { 
      $(this).animate({ 
       width: ['100px', 'swing'], 
       height: ['100px', 'swing'], 
       marginTop: ['15px', 'swing'], 
         marginLeft: ['15px', 'swing'], 
      }, 1000, 'swing'); 
     }); 
    }); 
}); 

注意,我打字幾乎肯定是不正確的值...

+0

嘗試用頂部和左邊(邊距無效),但它會導致一些奇怪的跳躍。此外,我仍然不知道如何將div分配給中心。 http://jsfiddle.net/G8Ste/587/ – 2012-02-28 15:15:21

0

看起來你應該使用Scale

+0

我可以使用自定義寬度以及比例嗎? – 2012-02-28 15:15:46

+0

看起來像這個小提琴(http://jsfiddle.net/sk62Y/4/)顯示了一些例子...不完全確定,如果這是你想要的東西,但是。 – Matt 2012-02-28 15:23:22

+0

看起來效果在Scale上不起作用。 – 2012-02-28 15:42:24

3
$('#myimage').mousedown(function() { 
    var img = $(this); 
    img.stop().animate({ 
     left: ['30px', 'swing'], // left + (width - new width)/2 
     top: ['60px', 'swing'], // top + (height - new height)/2 
     width: ['80px', 'swing'], 
     height: ['80px', 'swing'], 
    }, 50, 'swing'); 
    $(document).one("mouseup", function(){ 
     img.stop().animate({ 
      left: ['-5px', 'swing'], // left - (new width - width)/2 
      top: ['25px', 'swing'], // top - (new height - height)/2 
      width: ['150px', 'swing'], 
      height: ['150px', 'swing'], 
     }, 150, 'swing', function() { 
      $(this).animate({ 
       left: ['20px', 'swing'], 
       top: ['50px', 'swing'], 
       width: ['100px', 'swing'], 
       height: ['100px', 'swing'], 
      }, 1000, 'swing'); 
     }); 
    }); 
}); 

http://jsfiddle.net/diode/G8Ste/598/

編輯:

,使其成爲所有影像與myimage類下面做 給出一開始存儲所有圖像的初始屬性,通過運行這mousedown處理工作,一旦

$(".myimage").each(function(i, img){ 

    $(img).data("width", $(img).width()); 
    $(img).data("height", $(img).height()); 
    $(img).data("left", parseInt($(img).css("left"),10)); 
    $(img).data("top", parseInt($(img).css("top"),10)); 

}); 

然後

var img = $(this); 

var ww = img.data("width"); 
var hh = img.data("height"); 
var left = img.data("left"); 
var top = img.data("top"); 

// then same code as last jsfiddle 

+0

偉大的貢獻! 我嘗試了這一點,並添加了左側和頂部: http://jsfiddle.net/G8Ste/597/ 任何與此對象相關的機會%而不是使用px? – 2012-02-28 15:50:40

+0

亞..這是可能的。 – Diode 2012-02-28 15:53:25

+0

我們將不得不給予寬度,高度,左側和頂部http://jsfiddle.net/diode/G8Ste/599/ – Diode 2012-02-28 16:12:26

0

http://jsfiddle.net/AJ66C/2/

改變的CSS由左:20像素;左:50px; 計算中心爲寬度/ 2 +頂部或左側(它應該保持相同的所有時間)

$('#myimage').mousedown(function() { 
     var img = $(this); 
     img.stop().animate({ 
      width: ['80px', 'swing'], 
      height: ['80px', 'swing'], 
      top: ['60px', 'swing'], 
      left: ['60px', 'swing'], 
     }, 50, 'swing'); 
     $(document).one("mouseup", function(){ 
      img.stop().animate({ 
       width: ['150px', 'swing'], 
       height: ['150px', 'swing'], 
       top: ['25px', 'swing'], 
       left: ['25px', 'swing'], 
      }, 150, 'swing', function() { 
       $(this).animate({ 
        width: ['50px', 'swing'], 
        height: ['50px', 'swing'], 
       top: ['75px', 'swing'], 
       left: ['75px', 'swing'], 
       }, 1000, 'swing'); 
      }); 
     }); 
    });