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.



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.


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


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

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.


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.


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


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'

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

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

    }

1

Eine Option wäre

const styleElement = getComputedStyle(document.getElementById("myDiv"));
console.log(styleElement.height);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.