2011-06-25 19 views
0

要素の垂直方向の整列のためにクロスブラウザソリューションを使用しようとしています(それは何度も文書化されているため、要素に画像が含まれているChromeを使用する場合を除いて、効果的です。これは、画像がまだ読み込まれていないため、Chromeが画像の高さを0と判断するためです。これを修正するために、以下のjQueryをどのように変更すればよいですか?jQueryを使用した垂直整列要素(ユニバーサルソリューション)

ありがとうございます!

$(document).ready(function() { 
    $(".valign").vAlign(); 
}); 


(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) { 
      mh=0; 
     } 
     $(this).css('margin-top', mh); 
    }); 
    }; 
})(jQuery); 

答えて

0

$(document).ready()$(window).load()に置き換えてください。参照されたすべてのイメージが読み込まれるまで実行されません。

0

ターゲット画像を最初に読み込み、コールバックを使用して高さcalcをトリックする必要があります。したがって:

...return this.each(function(i){ 
    $('targetImagePlaceholder').load('image/url.jpg', function(){ 
     var ah = $this.height(): 
     ... 

yaのために働くべきです。

+0

これは機能しますが、十分に一般的ではありません。私はこれを複数の状況で使用したいと思います。画像が格納されているS3バケットとのリンクが何であるかはわかりません。また、要素内に複数のimgがあり、縦方向に整列させたいという状況もあります。それぞれの中に入る必要はありません。 – delphi

+0

私は答えた後に気づいたが、最初に応答を得たいと思っていたが、とにかく$(this)と呼んでいるので、それぞれを行うために$(this)ロードを使うことができるが、あなたがsrcを知っていないことを読み込んでいます。 – meteorainer

関連する問題