CSS, HTML und Javascript mit {stil}

Abmessungen des Dokuments / Position von Elementen im Dokument

Javascript Document Width / Height

Javascript hat zwei Koordinatensysteme: Relativ zum Dokument und relativ zum Window aka Browserfenster oder ViewPort.

Auch CSS hantiert mit zwei Koordinatensystemen: position fixed und position: absolute. Was mit position:absolute und top/left platziert ist, bleibt an seiner Position im Dokument und scrollt mit, wenn die Seite gescrollt wird. Was mit position: fixed positioniert ist, sitzt relativ zum Browserfenster und ist dort fest verankert.

Das Window-Objekt repräsentiert das Browserfenster: Position, Breite und Höhe des Dokuments im Viewport, verfügbarer Platz und Position des Mauszeigers.

Wenn die Seite nicht gescrollt wurde, sind die Koordinaten eines Elements im Dokument dieselben wie die Koordinaten des Browserfensters. Der Nullpunkt beider Koordinatensysteme ist gleich: top/left.

Größe des Dokument

Das HTML-Dokument ist i.d.R. größer als das Browserfenster – meist in Hinsicht auf die Höhe des Dokuments (dann entstehen die vertikalen Scrollleisten), u.U. aber auch breiter als das Browserfenster (dann entstehen auch horizontale Scrollleisten).

Document offsetHeight – Höhe des Dokuments Schema eines Monitors mit einem Browserfenster und einem Dokument, das höher und breiter als das Browserfenster ist.
Das Verhältnis zwischen Screen, Window und Document

Für viele Jahre war jQuery die zuverlässige Obermenge von Javascript. Ab IE 9 gibt Vanilla Javascript Werte wie die Höhe und Breite des Browserfensters und des gerenderen Dokuments ebenso zuverlässig zurück.

jQuery                   Vanilla Javascript
$(window).scrollTop()    window.pageYOffset
$(window).scrollLeft()   window.pageXOffset

$(document).height()     document.documentElement.scrollHeight
$(document).width()      document.documentElement.scrollwidth
$(window).height()       window.innerHeight
$(window).width()        window.innerWidth

Wenn wir ganz vorsichtig sein wollen:

var w = window,
    d = document,
    e = d.documentElement,
    g = d.getElementsByTagName('body')[0],
    x = w.innerWidth||e.clientWidth||g.clientWidth,
    y = w.innerHeight||e.clientHeight||g.clientHeight;

Quelle: Github window-height-width.js

var body = document.body,
    html = document.documentElement;

hbox.innerHTML = "body.scrollHeight " + body.scrollHeight + 
                 "body.offsetHeight " + body.offsetHeight + 
                 "html.clientHeight " + html.clientHeight + 
                 "html.scrollHeight " + html.scrollHeight + 
                 "html.offsetHeight " + html.offsetHeight;

Nur IE10 liefert noch ein abweichendes Ergebnis bei offsetHeight – ab IE11 sind alle Browser auf derselben Linie.

Position eines Elements im Dokument

Javascript hat keine Standardmethode, um die Koordinaten eines Elements auszulesen – ist aber unproblematisch.

getBoundingClientRect() gibt in allen modernen Browsern den Abstand zum Browserfenster oben links zurück. Nur noch die Höhe des gescrollten Bereichs dazu und fertig.

function getCoords(elem) {
  let box = elem.getBoundingClientRect();

  return {
    top: box.top + pageYOffset,
    left: box.left + pageXOffset
  };
}

Höhe und Breite von Elementen

offsetWidth und offsetHeight (ganzzahlig)
liefern die Breite und die Höhe eines Elements inklusive padding und border (CSS border-box).
clientWidth und clientHeight (ganzzahlig)
sichtbarer Teil des Block-Inhalts ohne border, Scrollbar, aber mit padding.
scrollWidth und scrollHeight
Größe des Blocks mitsamt den nicht sichtbaren Teilen außerhalb des Scrollbereichs.
Erklärt offsetHeight, clientHeight, scrollHeigth
Tootsie roll powder gummies pastry icing donut chupa chups. Halvah cake chocolate toffee candy chocolate bar cotton candy caramels. Tiramisu biscuit wafer chocolate chupa chups dragée powder. Sugar plum jelly-o danish macaroon lollipop pastry. Jujubes cheesecake pudding lollipop muffin cookie lollipop liquorice. Lemon drops sesame snaps marzipan soufflé. Muffin donut icing apple pie muffin. Lollipop cookie candy. Cake marshmallow carrot cake chupa chups toffee candy sugar plum. Marshmallow chupa chups sweet roll muffin pie danish lemon drops ice cream chocolate cake. Sesame snaps tiramisu gummi bears danish bear claw pastry pie. Bear claw croissant marzipan cake oat cake pudding.
show.innerHTML = elem.offsetWidth;
show.innerHTML = elem.offsetHeight;
show.innerHTML = elem.clientHeight;
show.innerHTML = elem.scrollHeight;

Wenn eine detaillierte Berechnung erforderlich ist – offsetWidth und clientWidth sind Integer oder ganzzahlig: element.getBoundingClientRect() gibt Höhe und Breite des Elements mit Nachkommastellen zurück.

Position des Mauszeigers

Die Position des Mauszeigers ist keine Eigenschaft des Javascript window-Objekts, sondern eine Eigenschaft des Events.

Das Javascript Event-Objekt bietet viele Eigenschaften für die Position des Cursors – zu beachten dabei, dass pageX / pageY relativ zum Document agieren, clientX / clientY relativ zum Browserfenster.

pageX / pageY
Horizontale/vertikale Position des Cursors von der oberen linken Ecke aus in Relation zum Dokument.
x / y
Äquivalent zu clientX, clientY
clientX / clientY
Horizontale/vertikale Position des Cursors von der oberen linken Ecke aus in Relation zum Browserfenster (aka Viewport).
Position des Cursors im Dokument
box.innerHTML = "clientX / clientY " + eve.clientX + " " + eve.clientY;
box.innerHTML += "pageX / pageY    " + eve.pageX + " " + eve.pageY;
box.innerHTML += "x / y            " + eve.x + " " + eve.y;
www.javascript-document.net document.html Javascript offsetHeight, offsetWidth Screen Window Element padding border margin Document Erklärt offsetHeight, clientHeight, scrollHeigth Element Tootsie roll powder gummies pastry icing donut chupa chups. Halvah cake chocolate toffee candy chocolate bar cotton candy caramels. Tiramisu biscuit wafer chocolate chupa chups dragée blue yellow powder. Sugar plum jelly-o danish macaroon lollipop pa stry and swimmy lecker bar. Jujubes cheesecake pudding lollipop muffin cookie lollipop liquorice. Lemon drops sesame snaps marzipan soufflé. Muffin donut icing apple pie muffin. Lollipop cookie candy. Cake marshmallow carrot cake chupa chups toffee candy sugar plum. Marshmallow chupa chups sweet roll muffin pie danish lemon drops ice cream chocolate cake. Sesame snaps tiramisu gummi bears danish bear claw pastry pie. Bear claw croissant marzipan oat cake pudding. paddingTop paddingBottom paddingLeft paddingRight offsetHeigth scrollHeigth clientHeigth scrollWidth clientWidth offsetWidth border cssHeight cssWidth