Obtenga altura div con JavaScript simple


312

¿Alguna idea sobre cómo obtener la altura de un div sin usar jQuery?

Estaba buscando Stack Overflow para esta pregunta y parece que cada respuesta apunta a jQuery .height().

Intenté algo así myDiv.style.height, pero no devolvió nada, incluso cuando mi div tenía el suyo widthy estaba heightconfigurado en CSS.



Respuestas:


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

o

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

clientHeight Incluye acolchado.

offsetHeight incluye relleno, barra de desplazamiento y bordes.


2
offsetheight no funciona en ie10 debajo de quirksmode.org/mobile/tableViewport_desktop.html
fearis

3
También puede usar el scrollHeightcual incluye la altura del documento contenido, el relleno vertical y los bordes verticales.
Saeid Zebardast

55
clientHeighttambién incluye relleno, por lo que no es equivalente a$.height()
Eevee

2
los bordes y el margen también están ocupando espacio. :) y su respuesta implica clientHeightque no incluye relleno. y la pregunta menciona ambos $.height()y .style.height, ninguno de los cuales incluye relleno, lo que sugiere que el autor de la pregunta tampoco lo quiere.
Eevee

3
Nota: OP no solicitó respuestas que excluyeran el relleno . No hay una solución multiplataforma nativa para lo que conozco.
Dan


22

Otra opción es usar la función getBoundingClientRect. Tenga en cuenta que getBoundingClientRect devolverá un rect vacío si la pantalla del elemento es 'none'.

Ejemplo:

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

2
Creo que esta es la mejor solución
Intervalia

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

clientHeight y clientWidth son lo que está buscando.

offsetHeight y offsetWidth también devuelven la altura y el ancho, pero incluye el borde y la barra de desplazamiento. Dependiendo de la situación, puede usar uno u otro.

Espero que esto ayude.


2

Las otras respuestas no estaban funcionando para mí. Esto es lo que encontré en w3schools , suponiendo que divtiene un heighty / o widthconjunto.

Todo lo que necesita es heighty widthexcluir el relleno.

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

Votantes: esta respuesta ha ayudado a al menos 5 personas, a juzgar por los votos positivos que he recibido. Si no te gusta, dime por qué para que pueda solucionarlo. Esa es mi mayor molestia con los votos negativos; rara vez me dices por qué lo rechazas.


23
Esto no funcionará a menos que el div tenga un conjunto heighty / owidth
hopkins-matt

1
Pensé que se suponía e implicaba. ¿Te gustaría esa advertencia mencionada en mi respuesta?
Craned

2
Es mejor. Yo personalmente no consideraría los otros métodos como no precisos. Me aventuraría a decir que tengo un uso offsetHeighty clientHeightmás a menudo que style.height.
hopkins-matt

1
No estaban trabajando para mí. Por eso publiqué esta respuesta.
Craned

1
No puedo ver cómo w3schools dice que los otros métodos no son precisos.
aknuds1

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

Jsfiddle


1

Además de el.clientHeighty el.offsetHeight, cuando necesita la altura del contenido dentro del elemento (independientemente de la altura establecida en el elemento mismo) puede usar el.scrollHeight. más información

Esto puede ser útil si desea establecer la altura del elemento o la altura máxima a la altura exacta de su contenido dinámico interno. Por ejemplo:

var el = document.getElementById('myDiv')

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

Para cualquiera que se pregunte, esto es muy útil para hacer transiciones CSS para menús desplegables que tienen contenido de altura dinámica
menús


1

Aquí hay una alternativa más:

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

Una opción sería

const styleElement = getComputedStyle(document.getElementById("myDiv"));
console.log(styleElement.height);
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.