No dom javascript - qual é a diferença entre offsetHeight e clientHeight de um elemento?
javascript
Steve
fonte
fonte
Respostas:
clientHeight :
offsetHeight :
Portanto,
offsetHeight
inclui barra de rolagem e borda,clientHeight
não.fonte
clientSize
prontamente disponível (afinal, é a janela de exibição), mas precisa calcularoffsetHeight
depois de refletir todo o documento?A resposta de Oded é a teoria. Mas a teoria e a realidade nem sempre são iguais, pelo menos não para os elementos <BODY> ou <HTML>, que podem ser importantes para operações de rolagem em javascript.
A Microsoft tem uma boa imagem no MSDN :
Se você possui uma página HTML que mostra uma barra de rolagem vertical, seria de esperar que o elemento <BODY> ou <HTML> tenha um geater ScrollHeight que OffsetHeight, como mostra a imagem. Isso vale para todas as versões mais antigas do Internet Explorer.
Mas isso não acontece no Internet Explorer 11 e no Firefox 36. Pelo menos nesses navegadores, o OffsetHeight é quase o mesmo que o ScrollHeight, que está errado.
E enquanto OffsetHeight pode estar errado, ClientHeight está sempre correto.
Experimente o seguinte código em diferentes navegadores e você verá:
Enquanto o Internet Explorer mais antigo é exibido corretamente:
A saída do Firefox e do Internet Explorer 11 é:
o que mostra claramente que offsetHeight está errado aqui. OffsetHeight e ClientHeight devem diferir apenas alguns pixels ou serem iguais.
Observe que ClientHeight e OffsetHeight também podem diferir extremamente para elementos que não são visíveis como, por exemplo, um <FORM>, em que OffsetHeight pode ter o tamanho real do FORM, enquanto ClientHeight pode ser zero.
fonte