Co to jest offsetHeight, clientHeight, scrollHeight?

Myślał o wyjaśnienia, jaka jest różnica między offsetHeight, clientHeighti scrollHeightczy offsetWidth, clientWidthi scrollWidth? Tę różnicę należy znać przed rozpoczęciem pracy po stronie klienta. W przeciwnym razie połowa ich życia zostanie poświęcona na naprawę interfejsu użytkownika. Fiddle...