Lieber molily,
Schauen wir einmal in meinem FF (Version 30.0 Linux):
Wenn das Fenster so schmal ist, dass der Anzeigebereich nahezu völlig vom Inhalt des <body>-Elements bedeckt ist, dann "passt" die Position des Overlays wie gewünscht.
Ist der Viewport allerdings so breit, dass neben dem vom <body>-Inhalt bedeckten Bereich noch "Ränder" stehen bleiben, so stimmt die horizontale Position eben auch mit jQuery nicht mehr.
Ergo: jQuery kann mein Problem nicht lösen.
Auch hier kann man mein Problem im FF unter Linux nachvollziehen:
Wieder kann man sehen, dass bei einem schmalen Viewport die Position des Overlays "passt".
Auch in diesem Screenshot erkennt man, dass bei verbleibenden freien Flächen neben dem vom Inhalt des <body>-Elements bedeckten Bereich die horizontale Positionierung scheitert.
Leider kann jQuery auch hier anscheinend mein Problem nicht lösen.
Nur am Rande, ich hänge Overlays immer als Kinder von body ein, denn das macht das Positionieren einfacher und es kommt nicht zu hässlichen Effekten, wenn der Rand der Tabelle erreicht wird.
Es erscheint völlig unerheblich, ob das Overlay ein Kind von <body> oder ein Kindeskind davon ist, da die Layout-Eigenschaft position:relative des <body>-Elementes selbst das offensichtliche Problem bereitet. Ich kann das Overlay ja kein Kind von <html> sein lassen...
Es wäre interessant zu wissen, warum das <body>-Element bei position:relative kein offsetParent definiert. Nach meinem Verständnis wäre die Logik fehlerhaft, wenn <body> eine solche Layout-Eigenschaft erhalten kann, aber anders als seine Nachfahren-Elemente gerade nicht deren Verhalten hinsichtlich der offsetParent-Eigenschaften imitiert.
Was sagst Du dazu?
Liebe Grüße,
Felix Riesterer.
"Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes)