2011-09-08 95 views
5

嗨,有沒有人能告訴我ho使用一些延遲/動畫速度來重現這個css3效果?用jquery重現css3轉換

.element:hover{ 
-moz-transform: scale(1.3) rotate(0deg) translate(0px, 0px) skew(0deg, 0deg); 
-webkit-transform: scale(1.3) rotate(0deg) translate(0px, 0px) skew(0deg, 0deg); 
-o-transform: scale(1.3) rotate(0deg) translate(0px, 0px) skew(0deg, 0deg); 
-ms-transform: scale(1.3) rotate(0deg) translate(0px, 0px) skew(0deg, 0deg); 
transform: scale(1.3) rotate(0deg) translate(0px, 0px) skew(0deg, 0deg); 
z-index:9999; 

} 

JSFIDDLE

+4

是不是這只是縮放元素的寬度和高度? –

+0

http://jsfiddle.net/2xWXY/ – sbaaaang

回答

1

以下是接近您要求的東西。我敢肯定,你可以把它調整到您喜歡

$('.element').hover(function(){ 

    $(this).css('position','relative').animate({ 
     height: $(this).height()*1.3, 
     width: $(this).width()*1.3, 
     left: '-=' + $(this).width() /4, 
     top: '-=' + $(this).height() /4, 
     'fontSize': $('.element').css('fontSize').substring(0,$('.element').css('fontSize').length -2) * 1.3 + 'px' 
    },'fast'); 
}, 
function() {     
     $(this).css('position','relative').animate({ 
     height: $(this).height()/1.3, 
     width: $(this).width()/1.3, 
     left: 0, 
     top: 0, 
     'fontSize': $('.element').css('fontSize').substring(0,$('.element').css('fontSize').length -2)/1.3 + 'px' 
    },'fast'); 
}    

); 

http://jsfiddle.net/dTkhM/2/

+0

uhmmm ...嘗試過和鼠標停止傳送大量的時間遞歸鼠標:P – sbaaaang

+2

我沒有說這不是完美的,不是嗎?問題是當你改變div的寬度和高度時,它會從左上角開始縮放,而不是像css3轉換那樣在中間縮放。爲了解決這個問題,我不得不去改變TOP和LEFT屬性,但我不知道它們的正確值應該是什麼。另一個問題是,我不確定CSS使用十進制值,例如font-size:13.313452px。 –

+0

是的它不是offenseve我的語氣;)這只是說,你的代碼是很完美的,但我不能接受那個小蟲子的所有原因的答案;) – sbaaaang

2

以下是我可能會去實現一個簡單的旋轉(不考慮幀速率考慮在內),

$(function(){ 
    (function(n){ 
     this.interval = n; 
     this.transform = { 
      'rotation': 0 
     }; 

     this.start = function(){ 
      setInterval(this.update, this.interval); 
     }; 

     this.update = function(){ 
      this.transform['rotation'] = (this.transform.rotation + 10) % 360; 
      $('div').css('transform', 'rotate(' + this.transform.rotation + 'deg)'); 
     }; 
     return this; 
    })(30).start(); 
}); 

http://jsfiddle.net/dbrecht/82aUL/1/

這說明一個簡單的動畫。你應該能夠弄清楚如何將其餘部分放在一起。

+0

EHM ...:P ...不知道,但對我來說代碼不上的jsfiddle不工作:( – sbaaaang

+1

它的Chrome僅ATM –

+0

沒錯:對布萊恩的回答是明確的;) – sbaaaang