2012-07-17 1 views
0

누군가가 올바른 방향으로 나를 가리킬 수 있다고 생각합니다.jQuery를 사용하여 div의 수직 중심 이미지

저는 이미지의 높이가 일정한 경우 CSS를 사용하여 div 내에서 이미지의 세로 가운데 정렬을 시도했습니다. 그러나 (항상 그렇듯이) 사물은 그만큼 단순하지 않으며 이미지 높이는 거의 모든 경우에서 다릅니다.

이미지의 절반 높이의 음수 여백을 이미지에 추가하여 div의 가운데로 가져올 수 있기를 바랍니다.

내가 어떻게하는지에 대한 제안이 있으십니까?

이 작동하지 않는 것 : 사전에

var $img = $('div#imageColumn img'); 
var h = $img.height(); 
$img.css('margin-top', + h/-2 + "px"); 

감사를 S.

+1

을 지금까지 시도 무엇입니까? 현재 코드를 표시하면 더 잘 안내 할 수 있습니다. – MrOBrian

+0

정말 jQuery를 사용해야합니까? 이것을 확인해보십시오 : http://phrogz.net/css/vertical-align/index.html –

+0

안녕하세요 - 이미지 크기가 동적이므로 높이를 가져오고 음수 여백을 적용하려면 jquery를 사용해야합니다. 나는 CSS만으로도 그렇게 할 수 있다고 생각하지 않습니까? –

답변

0

이 코드는 몇 시간 전에 발견되었습니다. 이런 식으로 사용하십시오

$(".yourclass").vAlign(); 

상위 요소의 높이를 계산하여 그에 따라 가운데에 배치합니다.

기능 :

(function ($) { 
    // VERTICALLY ALIGN FUNCTION 
    $.fn.vAlign = function() { 
     return this.each(function (i) { 
      var ah = $(this).height(); 
      var ph = $(this).parent().height(); 
      var mh = Math.ceil((ph - ah)/2); 
      if (mh > 0) { 
       $(this).css('margin-top', mh); 
      } else { 
       $(this).css('margin-top', 0); 
      } 
     }); 
    }; 
})(jQuery); 
0

요 그것을 위해 jQuery를 필요로하지 않습니다는, CSS는 그것을 할 수 있습니다. 그냥으로 이미지를 설정합니다

.yourDiv .yourImg{ 
    display: inline-block; 
    vertical-align: middle; 
    /* if you wonder for a maximum height just add */ 
    max-height: 200px; 
} 

을 또한 당신이 거기 당신이 IE7에서 인라인 블록을 지원하기 위해 해킹에 대해 궁금해하는 경우 : http://www.kollerat.com/cms/index.php/Web-admin/HTML/IE7-and-inline-block.html

+0

크로스 브라우저에서 작동하는 해결책이 필요합니다. 불행히도 그것은 Firefox에서만 작동하는 것 같습니다. –

+0

IE7을 지원하려면 FF, Chrome 및 IE8 이상에서 작동합니다. 어떻게하는지 설명하는 링크를 붙여 넣었습니다. –

+0

감사합니다. -하지만 여전히 작동하지 않습니다 ... #imageColumn img { \t 최대 너비 : 445px; \t 최대 높이 : 333px; \t 디스플레이 : 인라인 블록; \t 세로 정렬 : 중간; \t} –