2010-03-05 129 views

回答

99

你可以做這樣的事情,這是一個充滿切換版本:

$("#mySelector").animate({ height: 'toggle', opacity: 'toggle' }, 'slow'); 

對於嚴格意義上的淡出:

$("#mySelector").animate({ height: 0, opacity: 0 }, 'slow'); 
+2

* bonks尼克·那些' 'show''應該是'' toggle'' – Powerlord 2010-03-05 15:33:00

+0

@Powerlord - Woops你是對的,正在測試這裏的展示,doh – 2010-03-05 15:43:47

2

我也有類似的問題,並固定它這樣。

$('#mydiv').animate({ 
      height: 0, 
     }, { 
      duration: 1000, 
      complete: function(){$('#mydiv').css('display', 'none');} 
     }); 
$('#mydiv').animate({ 
      opacity: 0, 
     }, { 
      duration: 1000, 
      queue: false 
     }); 

隊列屬性告訴它是否排隊動畫或只在一些網頁生澀運動立即播放

15

直接高度動畫效果。但是,將CSS轉換與jQuery的slideUp()相結合使得平滑消失的行爲。

function slideFade(elem) { 
    var fade = { opacity: 0, transition: 'opacity 0.5s' }; 
    elem.css(fade).slideUp(); 
    } 

slideFade($('#mySelector')); 

撥弄代碼:
http://jsfiddle.net/00Lodcqf
bye

這是我在dna.js項目中使用的解決方案,您可以查看代碼(github.com/dnajs/dna.js)看到用於切換額外的支持和回調。

+1

不錯的代碼,謝謝!它的工作方式與slideUp()+ fadeOut() – 2015-01-25 05:12:19

+1

謝謝。由於CodeKoalas的回答中提到的原因,Nick Craver接受的答案對我無效。不過,我更喜歡你的代碼,因爲它可以讓你爲淡入淡出和不透明效果設置不同的時間。 (例如,我喜歡當你設置的淡入淡出速度比滑上快一點。)但是,我不確定你的平滑度要求。在我的電腦上,你的代碼產生的效果在IE中很流暢,但在Chrome中並不特別。 – Atlas 2016-03-30 21:10:57

10

「Nick Craver」接受的答案絕對是您的選擇。我唯一要補充的是他的回答實際上並沒有「隱藏」它,這意味着DOM仍然認爲它是一個可行的元素來展示。

這可能是一個問題,如果您在'滑動'元素上有邊距或填充...他們仍然會顯示。所以,我只是增加了一個回調的動畫()函數實際上隱藏動畫完成後:

$("#mySelector").animate({ 
    height: 0, 
    opacity: 0, 
    margin: 0, 
    padding: 0 
}, 'slow', function(){ 
    $(this).hide(); 
}); 
+0

'正確答案' – 2017-08-12 21:15:42

1

基於@CodeKoalas投擲一個更細化在那裏。它佔垂直邊界和填充,但不是水平的。

$('.selector').animate({ 
    opacity: 0, 
    height: 0, 
    marginTop: 0, 
    marginBottom: 0, 
    paddingTop: 0, 
    paddingBottom: 0 
}, 'slow', function() { 
    $(this).hide(); 
}); 
0

有可能與slideUpfadeOut方法來做到這一點自己像這樣:

$('#mydiv').slideUp(300, function(){ 
    console.log('Done!'); 
}).fadeOut({ 
    duration: 300, 
    queue: false 
});