Ottieni altezza div con JavaScript semplice


312

Qualche idea su come ottenere l'altezza di un div senza usare jQuery?

Stavo cercando Stack Overflow per questa domanda e sembra che ogni risposta punta a jQuery .height().

Ho provato qualcosa del genere myDiv.style.height, ma non ha restituito nulla, anche quando il mio div aveva il suo widthe heightimpostato in CSS.



Risposte:


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

o

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

clientHeight include imbottitura.

offsetHeight include imbottitura, barra di scorrimento e bordi.


2
offsetheight non funziona su ie10 sotto quirksmode.org/mobile/tableViewport_desktop.html
fearis

3
È inoltre possibile utilizzare scrollHeightche include l'altezza del documento contenuto, l'imbottitura verticale e i bordi verticali.
Saeid Zebardast,

5
clientHeightinclude anche l'imbottitura, quindi non è equivalente a$.height()
Eevee

2
anche i bordi e il margine occupano spazio. :) e la tua risposta implica clientHeightche non includa il riempimento. e la domanda menziona entrambi $.height()e .style.height, nessuno dei quali include l'imbottitura, suggerendo che nemmeno chi lo ascolta lo vuole.
Eevee,

3
Nota: OP non ha chiesto risposte che escludessero il riempimento . Non esiste una soluzione multipiattaforma nativa per ciò di cui sono a conoscenza.
Dan


22

Un'altra opzione è utilizzare la funzione getBoundingClientRect. Nota che getBoundingClientRect restituirà un rettangolo vuoto se la visualizzazione dell'elemento è 'none'.

Esempio:

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

2
Penso che questa sia la soluzione migliore
Intervalia il

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

clientHeight e clientWidth sono ciò che stai cercando.

offsetHeight e offsetWidth restituiscono anche l'altezza e la larghezza ma include il bordo e la barra di scorrimento. A seconda della situazione, è possibile utilizzare l'uno o l'altro.

Spero che questo ti aiuti.


2

Le altre risposte non funzionavano per me. Ecco cosa ho trovato su w3schools , supponendo che divabbia a heighte / o widthset.

Tutto ciò che serve è heighted widthescludere l'imbottitura.

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

Voi downvoter: questa risposta ha aiutato almeno 5 persone, a giudicare dai voti che ho ricevuto. Se non ti piace, dimmi perché posso ripararlo. Questa è la mia più grande pipì con downvotes; mi dici raramente perché lo hai votato.


23
Questo non funzionerà a meno che il div non abbia un set heighte / owidth
hopkins-matt

1
Ho pensato che fosse assunto e implicito. Vorresti quell'avvertimento menzionato nella mia risposta?
Cranato il

2
È meglio. Personalmente non considererei gli altri metodi non accurati. Mi permetto di dire che ho un uso per offsetHeighte clientHeightpiù spesso di style.height.
hopkins-matt,

1
Non stavano lavorando per me. Ecco perché ho pubblicato questa risposta.
allungato il

1
Non riesco a vedere come w3schools dice che gli altri metodi non sono accurati.
aknuds1,

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

Jsfiddle


1

Oltre a el.clientHeighte el.offsetHeight, quando è necessaria l' altezza del contenuto all'interno dell'elemento (indipendentemente dall'altezza impostata sull'elemento stesso) è possibile utilizzare el.scrollHeight. Ulteriori informazioni

Questo può essere utile se vuoi impostare l'altezza o l'altezza massima dell'elemento all'altezza esatta del suo contenuto dinamico interno. Per esempio:

var el = document.getElementById('myDiv')

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

Per chiunque si chieda, questo è molto utile per fare transizioni CSS per i menu a discesa che hanno un contenuto ad altezza dinamica
cronoklee


1

Ecco un'altra alternativa:

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

Un'opzione sarebbe

const styleElement = getComputedStyle(document.getElementById("myDiv"));
console.log(styleElement.height);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.