Obtenez la hauteur de div avec JavaScript simple

312

Des idées sur la façon d'obtenir la hauteur d'un div sans utiliser jQuery?

Je cherchais Stack Overflow pour cette question et il semble que chaque réponse pointe vers jQuery .height().

J'ai essayé quelque chose comme myDiv.style.height, mais il n'a rien retourné, même lorsque mon div avait son widthet heightdéfini en CSS.

lwiii
la source

Réponses:

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

ou

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

clientHeight comprend un rembourrage.

offsetHeight inclut le rembourrage, la barre de défilement et les bordures.

Dan
la source
2
offsetheight ne fonctionne pas sur ie10 en dessous de quirksmode.org/mobile/tableViewport_desktop.html
fearis
3
Vous pouvez également utiliser scrollHeightce qui inclut la hauteur du document contenu, le remplissage vertical et les bordures verticales.
Saeid Zebardast
5
clientHeightcomprend également un rembourrage, donc ce n'est pas équivalent à$.height()
Évoli
2
les bordures et les marges prennent également de la place. :) et votre réponse implique de clientHeightne pas inclure de rembourrage. et la question mentionne les deux $.height()et .style.height, aucune des deux n'incluant le remplissage, suggérant que le demandeur n'en veut pas non plus.
Evoli
3
Remarque: OP n'a pas demandé de réponses excluant le remplissage . Il n'y a pas de solution native multiplateforme pour ce que je connais.
Dan
23

jsFiddle

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

Une autre option consiste à utiliser la fonction getBoundingClientRect. Veuillez noter que getBoundingClientRect retournera un rect vide si l'affichage de l'élément est «aucun».

Exemple:

var elem = document.getElementById("myDiv");
if(elem) {
   var rect = elem.getBoundingClientRect();
   console.log(rect.height);  
}
user4617883
la source
2
Je pense que c'est la meilleure solution
Intervalia
11
var myDiv = document.getElementById('myDiv'); //get #myDiv
alert(myDiv.clientHeight);

clientHeight et clientWidth sont ce que vous recherchez.

offsetHeight et offsetWidth renvoient également la hauteur et la largeur mais elles incluent la bordure et la barre de défilement. Selon la situation, vous pouvez utiliser l'un ou l'autre.

J'espère que cela t'aides.

Keo Strife
la source
2

Les autres réponses ne fonctionnaient pas pour moi. Voici ce que j'ai trouvé à w3schools , en supposant que le divhas a heightet / ou widthset.

Tout ce dont vous avez besoin est heightet widthd'exclure le rembourrage.

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

You downvoters: Cette réponse a aidé au moins 5 personnes, à en juger par les votes positifs que j'ai reçus. Si vous ne l'aimez pas, dites-moi pourquoi je peux le réparer. C'est ma plus grande bête noire avec des downvotes; vous me dites rarement pourquoi vous votez contre.

tendu
la source
23
Cela ne fonctionnera pas sauf si le div a un ensemble heightet / ouwidth
hopkins-matt
1
Je pensais que c'était supposé et implicite. Souhaitez-vous que cette mise en garde soit mentionnée dans ma réponse?
grue
2
Il est préférable. Personnellement, je ne considérerais pas les autres méthodes comme inexactes. Je me risquerais à dire que j'ai une utilisation pour offsetHeightet clientHeightplus souvent que style.height.
hopkins-matt
1
Ils ne travaillaient pas pour moi. C'est pourquoi j'ai posté cette réponse.
grue
1
Je ne vois pas comment w3schools dit que les autres méthodes ne sont pas précises.
aknuds1
1
<div id="item">show taille height</div>
<script>
    alert(document.getElementById('item').offsetHeight);
</script>

Jsfiddle

user3556121
la source
1

En plus de el.clientHeightet el.offsetHeight, lorsque vous avez besoin de la hauteur du contenu à l'intérieur de l'élément (quelle que soit la hauteur définie sur l'élément lui-même), vous pouvez l'utiliser el.scrollHeight. Plus d'informations

Cela peut être utile si vous souhaitez définir la hauteur ou la hauteur maximale de l'élément à la hauteur exacte de son contenu dynamique interne. Par exemple:

var el = document.getElementById('myDiv')

el.style.maxHeight = el.scrollHeight+'px'
cronoklee
la source
Pour ceux qui se demandent, cela est très utile pour effectuer des transitions CSS pour les listes déroulantes qui ont un contenu à hauteur dynamique
cronoklee
1

essayer

myDiv.offsetHeight 

Kamil Kiełczewski
la source
1

Voici une autre 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
la source
1

Une option serait

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