En el dominio de JavaScript: ¿cuál es la diferencia entre offsetHeight y clientHeight de un elemento?
javascript
Steve
fuente
fuente
Respuestas:
altura del cliente :
offsetHeight :
Entonces,
offsetHeight
incluye barra de desplazamiento y borde,clientHeight
no.fuente
clientSize
disponible (después de todo, es la ventanaoffsetHeight
gráfica ), pero ¿necesita calcularlo después de volver a fluir todo el documento?La respuesta de Oded es la teoría. Pero la teoría y la realidad no siempre son las mismas, al menos no para los elementos <BODY> o <HTML> que pueden ser importantes para las operaciones de desplazamiento en javascript.
Microsoft tiene una buena imagen en el MSDN :
Si tiene una página HTML que muestra una barra de desplazamiento vertical, uno esperaría que el elemento <BODY> o <HTML> tenga un geater ScrollHeight que OffsetHeight como muestra esta imagen. Esto es cierto para todas las versiones anteriores de Internet Explorer.
Pero no es cierto para Internet Explorer 11 y no para Firefox 36. Al menos en estos navegadores, OffsetHeight es casi lo mismo que ScrollHeight, lo cual es incorrecto.
Y aunque OffsetHeight puede estar equivocado, ClientHeight siempre es correcto.
Pruebe el siguiente código en diferentes navegadores y verá:
Mientras que Internet Explorer anterior se muestra correctamente:
El resultado de Firefox e Internet Explorer 11 es:
lo que muestra claramente que offsetHeight está mal aquí. OffsetHeight y ClientHeight deberían diferir solo unos pocos píxeles o ser iguales.
Tenga en cuenta que ClientHeight y OffsetHeight también pueden diferir extremadamente para elementos que no son visibles como, por ejemplo, un <FORM> donde OffsetHeight puede ser el tamaño real del FORMULARIO mientras que ClientHeight puede ser cero.
fuente