2014-02-24 154 views
5

我似乎無法清除已由GSAP動畫設置的圖像元素的樣式。清除由GSAP動畫設置的內嵌樣式

我已經試過各種方法:

$('#element').removeAttr("style"); 

$('#element').attr('style', ''); 

$("#element").css({ 
    '-webkit-transform': "", 
    '-moz-transform': "", 
    '-o-transform': "", 
    'msTransform': "", 
    'transform': "" 
}); 

上述工作都沒有。不過,當我運行在Chrome控制檯他們做的工作......

這些方法的應用的樣式如下:

style="-webkit-transform: matrix(-0.99775, 0.06697, -0.06697, -0.99775, 0, 0);"

+2

我認爲你的代碼執行後GSAP代碼正在運行.... –

+0

用於測試目的,你可以在超時回調中添加代碼,比如'setTimeout(function(){$('#element')。removeAttr 「style」);},2000)' –

+0

我在第二次運行動畫之前在動畫重置之前運行它。因此,時機不應該是我猜測的問題。 – Chris

回答

20

如果你想清除的屬性,你可以使用GSAP的clearProps特殊屬性,如:

//clear all inline properties immediately with a set() call: 
TweenLite.set("#element", {clearProps:"all"}); 

//or clear just the transform: 
TweenLite.set("#element", {clearProps:"transform"}); 

//or clear the transform at the end of your tween: 
TweenLite.to("#element", 1, {rotation:60, scale:0.5, clearProps:"transform"}); 

爲了記錄在案,GSAP只設置屬性,當你(在補間期間等)要求它 - 它確實不連續迫使他們帶入到t他內聯風格。變換是一種奇怪的野獸,因爲爲了解決某些瀏覽器錯誤並正確地維護狀態,它必須記錄元素本身的變換組件(旋轉,縮放,位置,傾斜),然後在下一次您讀入時讀取它們該元素除非設置parseTransform:true,這會迫使它從瀏覽器讀取計算的樣式矩陣,但這幾乎是不必要的。當然,如果您清除了「全部」或任何轉換,它也會將它們擦除,並在下次從瀏覽器提供的矩陣中重新解析它們。

如果您仍然遇到問題,那麼您的GSAP代碼也可以幫助您查看問題,因此請在codepen或jsfiddle中提供簡化的測試用例。

快樂補間!