2010-12-28 2 views
64

fadeOut() 대신 display : none 스타일을 사용하지 않는 대안이 있습니까? 나는 페이지 레이아웃에서 어떤 종류의 이동을 피하기 위해 숨겨진 가시성을 사용하고 싶습니다. 당신은 직접 opacity.animate()을 사용할 수 있습니다jQuery fadeOut 표시하지 않고 없음?

답변

98

:

$(".selector").animate({ opacity: 0 }) 

당신이 원하는 같은 요소가 여전히 공간을 차지이 방법은, 그냥 0 투명도를 가지고, 그래서 그것이 visibility: hidden 때 인 것과 같은 효과적으로입니다 그것은 끝납니다.

+12

사용자는 여전히 (* 예를 들어 * 링크) 요소를 클릭 할 수 있지만,이 경우 당신의 완료 콜백 함수 또는 이와 유사한 것에'visibility : hidden; '을 설정하려고 할 수 있습니다. – PleaseStand

+0

디스플레이를 none으로 설정하지 않고 요소를 숨기려고합니다. Additinaly 요소가 공간을 유지하고 싶지는 않지만 페이지에 아무 것도 없지만 공간이 여전히 예약되어 있으면 추악 해 보입니다. –

+1

@ObaidMaroof는 정확하게 동작 표시입니다. 아무 것도 없습니다 ... 말하는 경우 당신이 원하지 않는 즉각적인 숨김에 관해서는, 당신은 .fadeOut()을 표시합니다. 아무 것도 표시하지 않습니다. * none * after * a fade. –

65

입니다. It's called .fadeTo(), 대상 불투명도를 설정합니다.이 경우에는 0이됩니다.

$('element').fadeTo(1000, 0); // fade to "0" with a 1000ms duration 

이렇게하면 끝에 display 속성이 변경되지 않습니다.

+3

이것은 디스플레이를 추가하지 않습니다 : 0으로 페이딩 할 때 아무 것도 표시되지 않지만 0 이상으로 페이드하면 표시 : 블록을 강제 실행합니다 (최소한 display : none 일 때).따라서 특정 상황에서 실제로 디스플레이 속성을 변경합니다. 이것을 피하려면 animate()를 사용해야했습니다. – Jens

+0

하지만 요소를 숨겨서 문서의 공백을 차지하지 않도록하려면 (표시 없음과 같이) 어떻게해야합니까? 그리고이 모든 것을 디스플레이를 none으로 설정하지 않아도됩니다. –

+0

이 기능은 훌륭하게 작동했으며 숨기기 위해 표시 및 페이드 아웃을 모두 추가해야했습니다. $ ('msgInfo') .fadeTo (0, 500); $ ('# msgInfo') .fadeTo (2000, 0); –

2
이 일을하는 한 가지 방법은 다시 사용했던 다음 디스플레이 모드, .fadeOut을 캡처하고 전체에 숨어의 선호하는 방법을 수행하고 디스플레이를 설정하는 것입니다

:

var $element = $('#selector'); 

var display = $element.css('display'); 
$element.fadeOut(500, function() { 
    $element.css('visibility', 'hidden'); 
    $element.css('display', display); 
} 
0

fadeTo(500, 0) // fade out over half a second 
fadeTo(0, 0)  // instantly hide 

fadeIn() 

(당신이 다시 표시 할 때)와 호환되지 않습니다 (이상한)이다. 그래서 만약 당신이 다음에 다시 페이드

fadeTo(500, 1)

를 사용해야하거나 여전히 opacity: 0이 남아있을 것입니다 CSS를 display: none없이 뭔가를 숨기기 위해

fadeTo(500, 0)

를 사용하는 경우 그리고 css에서 보이지 않는 채로 남아있을 것입니다. 당신이 페이드 아웃 원하는

1

난 후, 다음 fadeIn 콘텐츠를 다시 변경 :

$("#layer").animate({opacity: 0}, 1000, 'linear', function(){ 

    //Do here any changes to the content (text, colors, etc.) 
    $("#layer").css('background-color','red'); //For example 

    $("#layer").animate({opacity: 1}); //FadeIn again 

}); 
+0

감사합니다 !! 이 진짜 도움이 +1 –

관련 문제