В javascript dom - в чем разница между offsetHeight и clientHeight элемента?
javascript
Стив
источник
источник
Ответы:
clientHeight :
offsetHeight :
Таким образом,
offsetHeight
включает в себя полосу прокрутки и границы,clientHeight
не.источник
clientSize
легкодоступный (в конце концов, это окно просмотра), но нужно рассчитатьoffsetHeight
после переформатирования всего документа?Ответ от Одеда - теория. Но теория и реальность не всегда одинаковы, по крайней мере, не для элементов <BODY> или <HTML>, которые могут быть важны для операций прокрутки в javascript.
У Microsoft есть хороший образ в MSDN :
Если у вас есть HTML-страница, на которой показана вертикальная полоса прокрутки, можно ожидать, что элемент <BODY> или <HTML> имеет элемент ScrollHeight, а не OffsetHeight, как показано на этом изображении. Это верно для всех старых версий Internet Explorer.
Но это не так для Internet Explorer 11 и не для Firefox 36. По крайней мере, в этих браузерах OffsetHeight почти такой же, как ScrollHeight, что неправильно.
И хотя OffsetHeight может быть неправильным, ClientHeight всегда корректен.
Попробуйте следующий код в разных браузерах, и вы увидите:
В то время как старый Internet Explorer показывает правильно:
Вывод из Firefox и Internet Explorer 11:
который ясно показывает, что offsetHeight здесь не так. OffsetHeight и ClientHeight должны отличаться только на несколько пикселей или быть одинаковыми.
Обратите внимание, что ClientHeight и OffsetHeight также могут сильно отличаться для элементов, которые не видны, например, <FORM>, где OffsetHeight может быть реальным размером FORM, а ClientHeight может быть нулевым.
источник