WARNING WARNING clientHeight
почти работает, но не содержит полей: (* 1002 *
Просто подумал, что я добавлю, что я пробовал это сегодня, и хотя nahumsilva & plodder почти правильно сделали это (версия nahumsilva, похоже, более кросс-браузерна {plodder, похоже, не работает в Chrome / WebKit, но я не эксперт по этим вопросам}), они оба упустили, что элемент может иметь вычисленные элементы стиля, которые не определены его собственным стилем.
Это сводило меня с ума - мне было интересно, где мои <p>
элементы получали дополнительные 16px высоты поля - пока я не понял, что это исходит из вычисленного стиля.
Итак, короче говоря, подход, подобный nahumsilva / plodder, работал для меня с дополнительным условием, что вы должны получить вычисляемый стиль элемента с window.getComputedStyle( element, null )
, который возвращает объект CSSStyleDeclaration
(например, element.style
). element.offsetHeight
/ element.clientHeight
должен дать вам высоту без полей, поэтому все выглядит примерно так:
var cstyle = window.getComputedStyle( element, null );
var elementHeight = element.offsetHeight +
Number( cstyle.marginBottom.replace(/[^\d\.]/g, '') ) +
Number( cstyle.marginTop.replace(/[^\d\.]/g, '') );