2012-04-11 17 views
2

可変の高さと幅の要素のサイズを取得する必要があります。#sentence、関連する他の要素のサイズを変更するにはそれに。 #sentenceはブラウザウィンドウの中央に配置され、その高さと幅はコンテンツの内容に関係なく決定されます。jquery .height()とspanタグの.width()の結果が一貫しない

HTML

<body> 
    <div id="wrapper"> 
     <div id="cell"> 
      <span id="sentence"> 
       sentence 
      </span> 
     </div> 
    </div> 
</body> 

CSS

body, html { 
    font-size: 18pt; 
    padding: 0px; 
    margin: 0px; 
    overflow: hidden; 
} 
#wrapper { 
    width: 100%; 
    height: 100%; 
    display: table; 
    text-align: center; 
} 
#cell { 
    display: table-cell; vertical-align: middle; 
} 

#sentence { 
    display: inline-block; 
    background-color: #abc; 
    padding: 1em; 
} 

JS

$(document).ready(function(){ 
    var h = $("#sentence").height(); 
    alert(h); 
}); 

私は#sentence.height()または.width()を取得しようとすると、私は戻って矛盾し得る:私のコードは次のようになります値。通常、高さは28ですが、時には19に戻ってきます。幅については、84または時々52になります。

おそらくその違いは、スクロールバーが一時的に表示されてからページが読み込まれると消えてしまうためです。私はoverflow: hidden;htmlbodyに追加して、表示されているかもしれないスクロールバーを取り除こうとしましたが、うまくいきませんでした。私も追加しようとしました

$(window).resize(function(){ 
    h = $("sentence").width(); 
}); 

それは動作しませんでした。 .css("height")を使用しても動作していないようです。

だから何ですか?なぜ私はこの問題を抱えていますか?これに関する助けを前にありがとう。

+0

私はjsFiddleを作成します...あなたはもっと助けを得るでしょう。 –

答えて

6

サイズを正しく設定するには、ブラウザをレイアウトしてレンダリングする必要があります。これは、.ready(...)イベントが発生した場合には必ずしも当てはまりません。

$(window).load(...)を代わりに使用してください。

+0

私はそれらを交換すると、コードはまったく動作しなくなります。私は '.ready()'は値を得て以来うまくいくはずだと思いますよね? – ben

+0

明らかに、あなたがランダムな値を取得しているからではありません!私は自分自身で働いている.load()を取得することができました... –

+0

'$(ウィンドウ).load(...)'は私のために働きます。ありがとう。 – todd

関連する問題