Der Aufbau ist so gewählt, dass er mir alle Spalten immer gleich lang macht, damit ich immer den gleichen Hintergrund habe. Nun will ich aber den ganzen Container zentrieren, was mir dem auskommentierten "margin: 0 auto;" und "position: relative;" super funktionieren würde, doch leider muss ich es absolute stellen, damit alle Spalten gleich lang sind - wie kann ich nun beides kombinieren?
Hä?
Wozu brauchst Du position: relaitve?
Du benutzt nicht eine einzige Positionierung (also sowas wie left, top etc.).
Bei Dir sind alle Spalten (links, mitte, rechts) mit float:left angegeben. Und sonst nix.
Und hier liegt das Problem.
"Float-Elemente" müssen konkrete absolute Maße haben.
Denn display: block (was bei DIVs normalerweise die Standardanzeige wäre) gilt nämlich für sie nicht mehr. (weil sie ja jetzt keine ganze Zeile mehr einnehmen können, da sie ja eben nunmal "floaten" sollen)
Das ist jetzt schwer zu erklären. Hauptsächlich, weil es sich bei mir hier größtenteils nur um Erfahrungswerte und daraus abgeleitetem gefährlichem Halbwissen handelt.
Ist keine konkrete absolute Höhe bei Elementen mit FLoat-Eigenschaft angegeben, "kollabieren" sie auf ... irgendeine winzige Höhe.
Was sich aber nicht auf deren Inhalt auswirkt, sondern auf das übergeordnete Element. D.h. für die Anzeige von Elementen mit Float-Eigenschaft hat es keine Auswirkung, wohl aber für die browserinterne Berechnung für den Platz, den diese Elemente tatsächlich einnehmen.
Was wiederum bedeutet, dass der DIV mit der id "container" sich logischerweise in seiner Höhe nicht mehr dem Inhalt anpassen kann. Weil er nicht weiß, wie hoch die Elemente sind. (Und der Inhalt der untergeordneten Elemente interessiert in diesem Falle nicht)
Du musst im Prinzip den Browser "zwingen" den #container in voller Höhe darzustellen.
Dafür gibt es einen kleinen Trick.
Einfach unten bevor der #container geschlossen wird ein DIV mit der Eigenschaft clear:both einfügen. (Im standard Stylesheet gab es dafür die Klasse .clearb)
Damit erzwingst Du eine neue "Zeile".
Jetzt weiß der Browser auch, wie hoch der #container gerendert werden muss, weil ja da unter diesen Float-Dingern noch ein Block-Element steht (was aber nichts beinhaltet und daher auch nicht sichtbar ist).
D.h. Du kannst ruhig mit margin:auto arbeiten.
Aber lass dieses position Zeug weg.
Last edited by NaN on Tue Mar 23, 2010 5:16 pm, edited 1 time in total.
position: absolute;
left: 50%;
margin-left: 428; /* hier muss die Hälfte der Breite stehen, was bei dir nicht geht... */
Das ist Blödsinn. Es funktioniert zwar (wenn man anstalle von margin-left: 428 margin-left:-428px angibt ), ist aber kein gutes Webdesign.
left: 50% bedeutet bei position: absolute links einen Abstand von 50% in Relation zur Breite des Browserfensters.
Der Container würde also erst in der Mitte anfangen, aber nicht in der Mitte zentriert stehen.
margin: auto ist bereits die Lösung, aber dafür auf das position Zeug verzichten und 'nen div mit clear:both einfügen.
Das war's dann schon
Last edited by NaN on Tue Mar 23, 2010 4:35 pm, edited 1 time in total.
NaN: Weiss auch, dass das Unsinn ist, bei einem Layout, dass nach unten flexibel ist. Aber dachte halt, ich fang nicht an, alles von vorne aufzudröseln. Aber das hast ja dann du gemacht.
Ich würd mal grundsätzlich überdenken, einige classes als id anzulegen - und mal das css auch zu ordnen (oder eventuell auch aufzuteilen?) der Überblick ist nicht mehr wirklich gegeben.