2011-02-15 2 views
2

jQuery.show()를 사용할 때, 애니메이션이 실행되기 전에 표시된 요소의 크기에 대한 정보에 액세스 할 수 있습니까?쇼 애니메이션 끝내기 전에 크기 정보 얻기

* 편집 - 나는 주위에 작업 내가 부탁 한 것은 여전히 ​​매우 유용 할 것이다 직접 수행되지 않은으로 사용할 계획 어디의 예를 들어 줄 거라고 생각 :

이 라이트 박스 내부

내용이 확장 .show()를 사용하지만 라이트 박스의 크기와 위치는 새로운 치수를 측정하고 조정하기 전에 애니메이션의 끝을 기다려야합니다. 결과는 서로 뒤 따르는 2 개의 애니메이션이되고, 내가 원하는 것은 2 개의 애니메이션이 동시에 실행되는 것입니다.

답변

1

$ ("일부 요소") CSS ({ 디스플레이 "블록"시인성 "숨겨진"위치 "절대" });

요소가 자연적인 크기를 갖지만 숨겨진 상태로 유지됩니다. 그런 다음 .height() 및 .width()를 사용하여 안전 요소의 치수를 측정 할 수 있습니다.

희망이 있습니다.

+0

그러면 [outerHeight] (http://api.jquery.com/outerHeight/) 및/또는 [outerWidth] (http://api.jquery.com/outerWidth/) – sholsinger

+0

을 사용하십시오. . 비록 내가 위치의 영향에 대해 조금은 걱정하지만, 작동 할 것 같은데. 절대 위치, 특히 위치를 사용할 때 요소를 렌더링하는 위치와 크기가 브라우저의 해석에 따라 때때로 깨지는 것처럼 보이는 ie6 & 7에서 절대적입니다. , 상단 등. – wheresrhys

+0

요소가 보이지 않는 동안 그것에 대해 너무 많이 걱정하지 마십시오. 나중에 해당 스타일을 무시하거나 css로 미리 설정해야합니다. 최종 결과를 달성하는 데 사용할 수있는 많은 방법이 있습니다. – Alex

-1

제가 올바르게 질문을 이해한다면, 아래의 내용을 이해해야합니다. .

var height = $("#foo").height(); 
+1

의 문제점은 그 (애니메이션 $ 전에 height()는 종종 (항상?) 0이기 때문에 애니메이션 이후의 높이를 측정하는 좋은 방법이 아닙니다. – wheresrhys

+0

코드 스 니펫을 제공해 주시겠습니까? – Chin

0

당신이 할 수있는 사항은 다음과 같습니다

$(document).ready(function() { 
    var beforeHeight = $('#element').height(); 
    $('#element').animate({ 
     height:350 
    },250, function() { 
     var afterHeight = $('#element').height(); 
    }); 

    alert("Before: "+beforeHeight+" \r\n After: " + afterHeight); 
}); 

그냥 당신이 질문을 다시 읽기 - 당신은이 개 애니메이션, 다른 후 하나를 원하는 경우 :

$('#element').animate({ 
    //animate stuff 
},250,function() { 
    $('#element').animate({ 
     //animate more stuff 
    },250) 
});