molily: Verhält sich <div> inkonsistent?

Beitrag lesen

Hallo Sönke,

[Die Breite] musst du dann explizit setzen!

Nein. (...) Unter diesen Gesichtspunkten müsste das absolute <div> IMHO tatsächlich die volle Fensterbreite einnehmen.

Vielleicht habe ich nicht verstanden, worauf du hinaus willst, aber redest du davon, wie sich die Browser verhalten sollten, wenn die Breite explizit auf 100% gesetzt wird? Denn komplett ohne width-Angabe richtet sich die Breite eines absolut positionierten Elements offensichtlich nach dessen Inhalt (in dem Fall Text). right wird im Normalfall nicht 0 und der rechte Rand des Elements endet auch nicht am rechten Rand des Browserfensters, sondern schon vorher nach Ende des Inhalts (sofern selbiger wie im Beispiel kürzer ist), wie das Ursprungsbeispiel zeigt.

Der Haken ist aber die Frage, was nun genau den Container darstellt, denn das hängt vom Browser ab, falls das Element kein passendes Elternelement (s.o.) findet. Für mein Verständnis müsste das das Browserfenster sein, aber möglicherweise sehen die Browserschreiberlinge das anders..

Die Beobachtung bei width:100% würde deine Theorie bzw. Lesart der Specs teilweise unterstreichen (falls du wie gesagt das meintest):
 ________________________________
|  ____________________________  |
| |Text eins___________________| |
|  ______________________________|___
| |Text zwei_____________________|___| <- Überlappung im Gecko
|                                |
|_______________________________>|

|____________________________|
     Breite content edge body
|_|                            |_|
         padding von html
(oder irgendein margin/padding bei html oder body, welches die content edge von body einschränkt)
|________________________________|
     Breite margin edge html

Text eins ist in einem normal fließenden (position:static) Element untergebracht, Text zwei in einem absolut positionierten Element mit top-Angabe, aber ohne left-Angabe, und hat width:100%. Im Gecko/Mozilla wird das zweite Element so breit wie das html-Element insgesamt (und da es aufgrund der fehlenden left-Angabe links dort anfängt, wo die Innengrenzen des body-Elements anfangen, also bündig mit dem frei fließenden ersten Element ist, geht es über das Fenster hinaus und es werden horizontale Scrollbalken angezeigt). Im Opera 7.11 und MSIE 6 hingegen bedeutet width:100% die Breite des body-Elements (beide Elemente sind gleich breit, wie in der Ursprungsfrage wünscht). Erst wenn border, padding oder margin beim zweiten Element hinzukommen, unterscheiden sich die Breiten. Opera 6.06 verhält sich anscheinend wie Gecko, nur reserviert 20 Pixel für die (in dem Falle nicht sichtbare) vertikale Scrollbar.

Grüße,
Mathias