プレーンなJavaScriptでdivの高さを取得する


312

jQueryを使用せずにdivの高さを取得する方法に関するアイデアはありますか?

私はこの質問のためにStack Overflowを検索していましたが、すべての回答がjQueryを指しているよう.height()です。

私のような何かをしようとしたmyDiv.style.height私のdivは、その持っていた場合でも、それは何も返さないwidthし、heightCSSで設定を。



回答:


587
var clientHeight = document.getElementById('myDiv').clientHeight;

または

var offsetHeight = document.getElementById('myDiv').offsetHeight;

clientHeight パディングを含みます。

offsetHeight パディング、スクロールバー、ボーダーが含まれます。


2
offsetheightは、quirksmode.org / mobile / tableViewport_desktop.htmlの下のie10でwokrを実行しませ
fearis

3
scrollHeight含まれるドキュメントの高さ、垂直方向のパディング、垂直方向の境界線を含むを使用することもできます。
Saeid Zebardast

5
clientHeightまた、パディングも含まれるため、同等ではありません$.height()
Eevee

2
境界線とマージンもスペースを占めています。:)そしてあなたの答えclientHeightは、パディングが含まれていないことを意味します。そして、質問が両方の言及$.height().style.height、アスカーはどちらかそれを望んでいない示唆、パディングを含めどちらも。
Eevee

3
注:OPでは、パディングを除外した回答は求められませんでした。私が知っているネイティブクロスプラットフォームソリューションはありません。
Dan


22

別のオプションは、getBoundingClientRect関数を使用することです。要素の表示が「none」の場合、getBoundingClientRectは空のrectを返すことに注意してください。

例:

var elem = document.getElementById("myDiv");
if(elem) {
   var rect = elem.getBoundingClientRect();
   console.log(rect.height);  
}

2
私はこれがより良い解決策だと思います
Intervalia

11
var myDiv = document.getElementById('myDiv'); //get #myDiv
alert(myDiv.clientHeight);

clientHeightとclientWidthが探しているものです。

offsetHeightとoffsetWidthも高さと幅を返しますが、境界線とスクロールバーが含まれます。状況に応じて、どちらか一方を使用できます。

お役に立てれば。


2

他の答えは私のために働いていませんでした。ここでは、私が見つけたものだW3Schoolsのと仮定すると、div持っているheightおよび/またはwidthセットを。

必要なのはheightwidthパディングを除外することだけです。

    var height = document.getElementById('myDiv').style.height;
    var width = document.getElementById('myDiv').style.width;

あなたの反対投票:私が受け取った反対投票から判断すると、この回答は少なくとも5人を助けました。気に入らない場合は、その理由を教えてください。修正できます。これは私の反対投票で最大の不満です。なぜ反対票を投じたのかはめったにわかりません。


23
これは、div要素がセットを持っていない限り動作しませんされheight、および/またはwidth
ホプキンス-マット

1
私はそれが想定され、暗示されていると思いました。私の回答に記載されている警告をご希望ですか?
craned

2
それはさらにいいです。個人的には、他の方法は正確ではないと思います。私は私がのために使用を持っていると言ってベンチャーうoffsetHeightclientHeightより頻繁style.height
hopkins-matt 2015

1
彼らは私のために働いていませんでした。それが私がこの回答を投稿した理由です。
craned

1
他の方法は正確ではないとw3schoolsが言うのがわかりません。
aknuds1

1
<div id="item">show taille height</div>
<script>
    alert(document.getElementById('item').offsetHeight);
</script>

Jsfiddle


1

el.clientHeightel.offsetHeightに加えて、要素内のコンテンツ高さが必要な場合(要素自体に設定されている高さに関係なく)を使用できますel.scrollHeightより詳しい情報

これは、要素の高さまたはmax-heightを内部の動的コンテンツの正確な高さに設定する場合に役立ちます。例えば:

var el = document.getElementById('myDiv')

el.style.maxHeight = el.scrollHeight+'px'

不思議に思う人にとって、これは動的な高さのコンテンツを含むドロップダウンのCSS遷移を実行するのに非常に便利です
cronoklee


1

ここにもう一つの選択肢があります:

var classElements = document.getElementsByClassName("className");

function setClassHeight (classElements, desiredHeightValue) 
    {
        var arrayElements = Object.entries(classElements);
        for(var i = 0; i< arrayElements.length; i++) {
            arrayElements[i][1].style.height = desiredHeightValue;
        }

    }

1

1つのオプションは

const styleElement = getComputedStyle(document.getElementById("myDiv"));
console.log(styleElement.height);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.