Holen Sie sich div Höhe mit einfachem JavaScript

312

Irgendwelche Ideen, wie man die Größe eines Divs ohne jQuery ermitteln kann?

Ich habe Stack Overflow nach dieser Frage durchsucht und es scheint, dass jede Antwort auf jQuery's verweist .height().

Ich habe so etwas versucht myDiv.style.height, aber es hat nichts zurückgegeben, selbst wenn mein Div es hatte widthund heightin CSS eingestellt war.

lwiii
quelle

Antworten:

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

oder

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

clientHeight beinhaltet Polsterung.

offsetHeight Enthält Polsterung, Bildlaufleiste und Rahmen.

Dan
quelle
2
Offsetheight wokr nicht auf ie10 unter quirksmode.org/mobile/tableViewport_desktop.html
Angst ist
3
Sie können auch scrollHeightdie Höhe des enthaltenen Dokuments, den vertikalen Abstand und die vertikalen Ränder verwenden.
Saeid Zebardast
5
clientHeightbeinhaltet auch Polsterung, so dass es nicht gleichbedeutend ist mit$.height()
Eevee
2
Auch die Grenzen und der Rand nehmen dort Platz ein. :) und Ihre Antwort impliziert, clientHeightdass keine Polsterung enthalten ist. und die Frage erwähnt beide $.height()und .style.height, von denen keine Polsterung beinhaltet, was darauf hindeutet, dass der Fragesteller es auch nicht will.
Eevee
3
Hinweis: OP hat nicht nach Antworten gefragt, die das Auffüllen ausschließen . Es gibt keine native plattformübergreifende Lösung für das, was mir bekannt ist.
Dan
23

jsFiddle

var element = document.getElementById('element');
alert(element.offsetHeight);
Daniel Imms
quelle
22

Eine weitere Option ist die Verwendung der Funktion getBoundingClientRect. Bitte beachten Sie, dass getBoundingClientRect ein leeres Rect zurückgibt, wenn die Anzeige des Elements 'none' ist.

Beispiel:

var elem = document.getElementById("myDiv");
if(elem) {
   var rect = elem.getBoundingClientRect();
   console.log(rect.height);  
}
user4617883
quelle
2
Ich denke, das ist die bessere Lösung
Intervalia
11
var myDiv = document.getElementById('myDiv'); //get #myDiv
alert(myDiv.clientHeight);

clientHeight und clientWidth sind das, wonach Sie suchen.

offsetHeight und offsetWidth geben ebenfalls die Höhe und Breite zurück, enthalten jedoch den Rand und die Bildlaufleiste. Je nach Situation können Sie den einen oder anderen verwenden.

Hoffe das hilft.

Keo Streit
quelle
2

Die anderen Antworten funktionierten nicht für mich. Folgendes habe ich bei w3schools gefunden , vorausgesetzt, das divhat ein heightund / oder ein widthSet.

Alles was Sie brauchen ist heightund widthPolsterung auszuschließen.

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

Ihr Downvoter: Diese Antwort hat mindestens 5 Personen geholfen, gemessen an den Upvotes, die ich erhalten habe. Wenn es dir nicht gefällt, sag mir warum, damit ich es reparieren kann. Das ist mein größter Ärger mit Abstimmungen. du sagst mir selten, warum du es ablehnst.

reckte sich
quelle
23
Dies wird nicht funktionieren, es sei denn, der Div hat einen Satz heightund / oderwidth
Hopkins-Matt
1
Ich dachte, das wurde angenommen und impliziert. Möchten Sie diesen in meiner Antwort erwähnten Vorbehalt?
Craned
2
Es ist besser. Ich persönlich würde die anderen Methoden nicht als nicht korrekt betrachten. Ich würde sagen, ich habe eine Verwendung für offsetHeightund clientHeightöfter als style.height.
Hopkins-Matt
1
Sie haben nicht für mich gearbeitet. Deshalb habe ich diese Antwort gepostet.
Craned
1
Ich kann nicht sehen, wie w3schools sagt, dass die anderen Methoden nicht korrekt sind.
aknuds1
1
<div id="item">show taille height</div>
<script>
    alert(document.getElementById('item').offsetHeight);
</script>

Jsfiddle

user3556121
quelle
1

Zusätzlich zu el.clientHeightund el.offsetHeight, wenn Sie die Höhe des Inhalts innerhalb des Elements benötigen (unabhängig von der am Element selbst festgelegten Höhe), können Sie verwenden el.scrollHeight. Mehr Info

Dies kann nützlich sein, wenn Sie die Elementhöhe oder die maximale Höhe auf die exakte Höhe des internen dynamischen Inhalts einstellen möchten. Zum Beispiel:

var el = document.getElementById('myDiv')

el.style.maxHeight = el.scrollHeight+'px'
Cronoklee
quelle
Für alle, die sich fragen, ist dies sehr nützlich, um CSS-Übergänge für Dropdowns mit dynamischer Höhe
durchzuführen
1

Versuchen

myDiv.offsetHeight 

Kamil Kiełczewski
quelle
1

Hier ist noch eine Alternative:

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;
        }

    }
Pedro Coelho
quelle
1

Eine Option wäre

const styleElement = getComputedStyle(document.getElementById("myDiv"));
console.log(styleElement.height);
SHIVANSH NARAYAN
quelle