CSSに高さが設定されていないdivの高さを取得します


90

要素にCSSの高さのルールセットがない場合、要素の高さを取得する方法はあります.height()か。最初にCSSのルールセットが必要なため、jQueryメソッドを使用できません。高さを取得する他の方法はありますか?


2
height()CSSルールが必要だと思う理由は何ですか?
James Montagne

height()要素の計算された高さを取得します...
elclanrs 2012年

1
隠し要素の中に何かの高さを取得しようとしているように聞こえますか?または要素自体が非表示になっています。できない!
charlietfl 2012

heightCSSを設定する必要がないため、コードを含めます。そのリンクはjqueryとは何の関係もありません。
James Montagne

その「洞察」リンクは7歳です!
charlietfl

回答:


220

jQuery .heightは要素の高さを返します。計算された高さを決定するため、CSS定義は必要ありません。

デモ

あなたは使用することができ.height().innerHeight()またはouterHeight()あなたが必要なものに基づきます。

ここに画像の説明を入力してください

.height() -パディング、ボーダー、マージンを除く要素の高さを返します。

.innerHeight() -要素の高さを返します。パディングは含まれますが、ボーダーとマージンは含まれません。

.outerHeight() -境界線を含み、マージンを除いたdivの高さを返します。

.outerHeight(true) -マージンを含むdivの高さを返します。

以下のライブスニペットのコードスニペットを確認してください。:)

$(function() {
  var $heightTest = $('#heightTest');
  $heightTest.html('Div style set as "height: 180px; padding: 10px; margin: 10px; border: 2px solid blue;"')
    .append('<p>Height (.height() returns) : ' + $heightTest.height() + ' [Just Height]</p>')
    .append('<p>Inner Height (.innerHeight() returns): ' + $heightTest.innerHeight() + ' [Height + Padding (without border)]</p>')
    .append('<p>Outer Height (.outerHeight() returns): ' + $heightTest.outerHeight() + ' [Height + Padding + Border]</p>')
    .append('<p>Outer Height (.outerHeight(true) returns): ' + $heightTest.outerHeight(true) + ' [Height + Padding + Border + Margin]</p>')
});
div { font-size: 0.9em; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="heightTest" style="height: 150px; padding: 10px; margin: 10px; border: 2px solid blue; overflow: hidden; ">
</div>


37

他の人が同じ問題を抱えている場合のためのメモ。

私は同じ問題を抱えていて、別の答えを見つけました。その内容によって決定されるdivの高さの取得は、window.loadまたはwindow.scrollではなくdocument.readyで開始する必要があることがわかりました。私もouterHeight()を使用しました

var currentHeight = 0;
$(window).load(function() {
    //get the natural page height -set it in variable above.

    currentHeight = $('#js_content_container').outerHeight();

    console.log("set current height on load = " + currentHeight)
    console.log("content height function (should be 374)  = " + contentHeight());   

});

1
おそらくそれらを使用/印刷した後に高さを変更するより多くの指示があるので、あなたは奇妙な高さを得ています。スクリプトの最後に高さを尋ねることをお勧めします
Gjaa

10

jQueryでこれを行うことができます。すべてのオプションを試してみてください.height().innerHeight()または.outerHeight()

$('document').ready(function() {
    $('#right_div').css({'height': $('#left_div').innerHeight()});
});

スクリーンショットの例

ここに画像の説明を入力してください

お役に立てれば。ありがとう!!


8

また、確認してdiv要素は現在、DOMに追加され見えます


13
これは私が答えよりコメントとして適しているかもしれないことに注意してください。
kkuilla 14年

4
彼にはコメント権限がなかったでしょう、リラックスしてください。
StackOverflowed

3
そもそも要素がDOMに接続されていない場合、他の回答はどれも機能しないため、これは重要な情報だと思います。
グイド、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.