Was ist im Javascript-Bereich der Unterschied zwischen offsetHeight und clientHeight eines Elements?
javascript
Steve
quelle
quelle
Antworten:
clientHeight :
offsetHeight :
So
offsetHeight
enthält Scrollbar und GrenzeclientHeight
nicht.quelle
clientSize
sofort verfügbare verfügt (schließlich ist es das Ansichtsfenster), aberoffsetHeight
nach dem erneuten Fließen des gesamten Dokuments rechnen muss?Die Antwort von Oded ist die Theorie. Die Theorie und die Realität sind jedoch nicht immer gleich, zumindest nicht für die Elemente <BODY> oder <HTML>, die für Bildlaufvorgänge in Javascript wichtig sein können.
Microsoft hat ein schönes Bild im MSDN :
Wenn Sie eine HTML-Seite haben, die eine vertikale Bildlaufleiste zeigt, würde man erwarten, dass entweder das <BODY> - oder das <HTML> -Element einen ScrollHeight-Geater als OffsetHeight hat, wie dieses Bild zeigt. Dies gilt für alle älteren Versionen von Internet Explorer.
Dies gilt jedoch nicht für Internet Explorer 11 und nicht für Firefox 36. Zumindest in diesen Browsern ist OffsetHeight fast identisch mit ScrollHeight, was falsch ist.
Und während OffsetHeight möglicherweise falsch ist, ist ClientHeight immer korrekt.
Probieren Sie den folgenden Code in verschiedenen Browsern aus und Sie werden sehen:
Während älterer Internet Explorer korrekt anzeigt:
Die Ausgabe von Firefox und Internet Explorer 11 lautet:
was deutlich zeigt, dass offsetHeight hier falsch ist. OffsetHeight und ClientHeight sollten sich nur um wenige Pixel unterscheiden oder gleich sein.
Bitte beachten Sie, dass sich ClientHeight und OffsetHeight auch für Elemente, die nicht sichtbar sind, wie z. B. eine <FORM>, in der OffsetHeight die tatsächliche Größe des FORMULARS sein kann, während ClientHeight möglicherweise Null ist, erheblich unterscheiden können.
quelle