2016-04-04 8 views
1

divのサイズを計算する必要があります。 Jqueryには便利な機能があり、outerHeight()です。それはあなたに要素のサイズを与え、余白を含める場合はouterHeight(true)と呼んでいます。jqueryを使用して余白を持つ要素の高さを計算する

しかし、内側の要素に余白がある場合、外側の要素のサイズは変更されません。内側のものはまだ完全に内側と見なされますが。 Here's an example of what I mean

外側のdivのouterHeightは18で、内側のdivのouterHeightは218で、テキストの18と100pxの2つの余白です。

最終的なdivの中にあるすべてのものを追跡することはできません。内に含まれるコンテンツのマージンを含め、実際の身長をどのように測定できますか?

+1

代わりにマージンの使用パディング;)https://jsfiddle.net/h8uvyx1w/1/ – Refilon

+0

私がしてみたいが、私はそれを選ぶために得ることはありません。 –

答えて

1

それは少しハック方法ですが、あなたはこれが正しい高さを取得するための容器を強制します

#container { 
    border: 1px solid transparent; 
} 

を追加することができます。

document.write('container height= ' + $("#container").outerHeight(true) + '<br>'); 
 
document.write('stuff height= ' + $("#stuff").outerHeight(true));
#stuff { 
 
    margin: 100px; 
 
} 
 
#container { 
 
    border: 1px solid transparent; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="container"> 
 
    <p id="stuff"> 
 
    lorem ipsum and so on 
 
    </p> 
 
</div>

+0

すばらしい。これは実際に動作します。私はまだouterHeightが透明な境界線を追加せずに高さ全体を計算しないのは分かりませんが、ありがとうございます。 –

1

私はあなたのCSSを悪い習慣とみなし、それを変更します。例えば。内側divをラップして、マージンの代わりにラッパーにパディングを与えることができます。

HTML

<div id="container"> 
    <div id="wrapper"> 
    <p id="stuff"> 
     lorem ipsum and so on 
    </p> 
    </div> 
</div> 

CSS

#wrapper { 
    padding: 100px; 
} 
#stuff { 
    margin: 0; 
} 

私はあなたの例を更新:https://jsfiddle.net/h8uvyx1w/2/

それとも、パディングに、内側のdivのマージンを変更することができれば、おそらくあなたは、ラッパーを必要としません、あなたのニーズに応じて。

+0

してください。そして、悪い習慣を尋ねられていない質問に答えることを検討します。いいえ、私はそれを変更することはできません。私はまだ私がコントロールすることができない、または予測することができないものを含むdivの高さを把握する必要があります。 –

+0

あなたはあなたの質問にそれを述べていないので、私はあなたがdiv内のコンテンツを変更できないことを知っていただけです。したがって、別のdivにそれをラップする有効なオプションです。さらに私はそれが*悪い習慣であるとは言わなかった、私はちょうど私の意見を追加したので、あなたはそれを考慮に入れることができる。それは犯罪ではありません!あなたはdimshiksの答えでそれを理解してうれしいです。 – sepiott

+0

含まれている要素に余白がない場合、どのように「マージンを持つ要素の高さを計算する」ことができますか? –

関連する問題