Obtenha div height com JavaScript simples


312

Alguma idéia de como obter a altura de uma div sem usar o jQuery?

Eu estava procurando Stack Overflow para esta pergunta e parece que todas as respostas estão apontando para jQuery .height().

Eu tentei algo como myDiv.style.height, mas ele não retornou nada, mesmo quando meu div tinha widthe heightdefinido em CSS.



Respostas:


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

ou

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

clientHeight inclui estofamento.

offsetHeight inclui preenchimento, scrollBar e bordas.


2
offsetHeight doesnt wokr no IE10 abaixo quirksmode.org/mobile/tableViewport_desktop.html
fearis

3
Você também pode usar o scrollHeightque inclui a altura do documento contido, preenchimento vertical e bordas verticais.
Saeid Zebardast

5
clientHeighttambém inclui preenchimento, por isso não é equivalente a$.height()
Eevee

2
as bordas e a margem também estão ocupando espaço. :) e sua resposta implica clientHeightque não inclui preenchimento. e a pergunta menciona ambos $.height()e .style.height, nenhum dos quais inclui preenchimento, sugerindo que o solicitante também não o deseja.
Eevee

3
Nota: O OP não solicitou respostas que excluíssem o preenchimento . Não há uma solução multiplataforma nativa para a qual estou ciente.
Dan


22

Outra opção é usar a função getBoundingClientRect. Observe que getBoundingClientRect retornará um ret vazio se a exibição do elemento for 'none'.

Exemplo:

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

2
Eu acho que esta é a melhor solução
Intervalia

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

clientHeight e clientWidth são o que você está procurando.

offsetHeight e offsetWidth também retornam a altura e a largura, mas incluem a borda e a barra de rolagem. Dependendo da situação, você pode usar um ou outro.

Espero que isto ajude.


2

As outras respostas não estavam funcionando para mim. Aqui está o que eu encontrei na w3schools , supondo que divtenha um heighte / ou widthconjunto.

Tudo o que você precisa é heighte widthexclui o preenchimento.

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

Vocês que recusaram: Esta resposta ajudou pelo menos 5 pessoas, a julgar pelos votos que recebi. Se você não gostar, me diga o porquê para que eu possa consertar. Essa é a minha maior irritação com votos negativos; você raramente me diz por que votou negativamente.


23
Isso não funcionará, a menos que a div tenha um conjunto heighte / ouwidth
hopkins-matt

1
Eu pensei que era assumido e implícito. Gostaria que a ressalva mencionada na minha resposta?
craned

2
É melhor. Eu, pessoalmente, não consideraria os outros métodos como não precisos. Atrevo-me a dizer que tenho um uso offsetHeighte com clientHeightmais frequência do que style.height.
Hopkins-mate

1
Eles não estavam trabalhando para mim. Foi por isso que postei esta resposta.
craned

1
Não vejo como a w3schools diz que os outros métodos não são precisos.
precisa saber é o seguinte

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

Jsfiddle


1

Além de el.clientHeighte el.offsetHeight, quando você precisar da altura do conteúdo dentro do elemento (independentemente da altura definida no próprio elemento), poderá usar el.scrollHeight. mais informações

Isso pode ser útil se você desejar definir a altura ou a altura máxima do elemento para a altura exata do conteúdo dinâmico interno. Por exemplo:

var el = document.getElementById('myDiv')

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

Para quem se perguntando, isso é muito útil para fazer transições CSS para dropdowns que têm conteúdo dinâmico altura
cronoklee


1

Aqui está mais uma 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

Uma opção seria

const styleElement = getComputedStyle(document.getElementById("myDiv"));
console.log(styleElement.height);
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.