ich will eine einfache website aus drei divs machen:
oben ein banner div, darunter ein menü div links und ein div für den content rechts.
das banner div ist kein problem, aber bei den anderen beiden hakts:
beim menü div ist float so eingestellt dass der div für den content rechts vorbeiläuft.
dabei gibts allerdings zwei probleme:
auf den content seiten bei denen der content länger ist wie das menü, fliest der content links unter das menü (allerdings ist der menüinhalt dynamisch, es soll also keine breite eingetragen werden)
das menü div soll eigentlich bis ganz unten ans ende vom browser fenster gehen, jedoch ändert sich durch height: 100% gar nichts.
Gebe .main mal ebenfalls ein float: left;
Umspanne beide gefloateten Boxen mit einem weiteren
.
Innerhalb des umschließenden
s brichst du den Float mit clear ab. html
[code]
[/code]Entweder du fügst noch ein weiteres Element nach .main ein und gibst diesem clear: both;
Oder du clearst mit dem sogenannten clearfix (pseudoklasse :after css3)
[B]css[/B]
[code]
body
{
background-color: #3f7fbf;
font-family: verdana;
}
div.main
{
float: left;
background-color: #ffffff;
padding-left: 16px;
padding-top: 16px;
}
[/code]Der IE bis Vers. 7 kennt :after noch nicht. dafür cleart er automatisch wenn eine Höhe bzw. Mindesthöhe für das Elternelement angegeben wurde:
[code]
/autoclear IE5 bis IE6/
html #spalten {
height: 1%;
}
/autoclear IE7/
+html #spalten {
min-height: 1%;
}
[/code][I]
height: 100%;[/I] geht immer vom Elternelement aus.
In deinem Beispiel würde das nicht so einfach funktionieren weil der Header eine feste Höhe in px hat.
Du müsstest den Elternelementen ( und ) ebenfalls eine Höhe von 100% geben.
Wenn .menueheight:100%; von body hat würde .menue über das Browserfenster hinausragen. (.menue {height:100%} + Höhe von .header).
Ein ständiger, vertikaler Scrollbalken währe die Folge.
wenn ich main auch float: left gebe, wird das main div unter das menue div gesetzt, egal ob ich ein zusätzliches umschließendes div habe oder nicht.
durch das hidden in dem umschließenden div werden menue und main nicht mehr angezeigt, wenn ichs weg mach steht dafür der text „floatbreak“ unter main.
das einzige was bis jetzt geklappt hat ist menue eine feste breite zu geben und main mit margin weg zu schieben, aber dann ist das ganze nicht mehr dynamisch
Ja, das ist das dynamische an der Sache. Wenn die beiden Boxen nicht nebeneinander passen werden sie untereinander dargestellt.
Wenn du das verhindern willst musst du Breiten angeben (Können auch prozentuelle Angaben sein ) .
kann ich ohne Link / Quelltext nicht nachvollziehen.
klar, wenn ich max-width angeb gehts, aber ich wlls ja grade ohne schaffen.
das menü div hat immer text + 16px rand an jeder seite und das main div bekommt den rest.
das scheint mit xhtml aber nicht zu gehen, da werd ich wohl auf javascript zurückgreifen müssen.
Mit (X)HTML geht sowas auch nicht, das ist reines CSS.
Und auf JavaScript zurückzugreifen fürs Layout halte ich für etwas arg gefährlich. Die Site muss ja weiterhin funktionieren, wenn JS deaktiviert ist.