Ich möchte, dass der div „main“ (rot) nicht so unter den div „nav“ (da wo „home“ drinnen steht) „hineinrutscht“. Also so, dass er gerade bis unten durchgeht. Weiß aber nicht wirklich wie ich das machen soll…
Ich hoffe ich hab mich einigermaßen verständlich ausgedrückt
Wenn ich dem div main jetzt zb ne margin-left von 10px gebe dan rückt ja dieser einfach nur um 10px nach rechts. Oder wo soll ich hier ne margin machen?
#nav hat eine breite von 100px, also gibts du #main ein margin-left von 100px
natürlich musst du dann auch die breite von #main um 100px verringern, damit es wieder passt
nun, du solltest schon ein margin-left für #main nehmen, was
breiter als als dein #nav ist ;o)
Das sollte eigentlich funktionieren.
Eleganter kann es auch sein, die Navigation zusätzlich absolut
zu positionieren, statt ein float zu verwenden, aber das ist
teilweise Geschmacksache. Eric Meyer hatte damals mal eine
ganz dekorative Anwendung für float gefunden, wo jedes der
Bilder in #nav unterschiedlich breit ist und mit float positioniert
wurde, wenn es sich aber immer um dasselbe Bild handelt, kommt
da nichts besonderes bei heraus …
schonmal versucht a.button mit padding-left ein wenig einzurücken?
dann musst du aber die breite dementsprechend auch verkleinern.
width ist ja 200px, wenn du padding-left auf 5px machst, musst du breite auf 195px runtermachen.
(Da du einen Doctype hast, wird der Internet Explorer es theoretisch auch so machen, ohne Doctype würde er es falsch umsetzen)
vielleicht hilft das ja, um zu verstehen wie width/height, padding, border und margin zusammenhängen.
width ist nicht die Gesamtbreite des Elements, sondern nur die Breite welches für den Inhalt reserviert wird.
Wenn die Gesamtbreite von a.button nicht größer sein darf als 200px, muss padding (left+right), border (left+right), margin (left+right) und width zusammen 200px ergeben.
margin kann ja mit dem margin von benachbart angezeigten
Elementen zusammenfallen, weswegen man das nicht eindeutig
einem Element zuordnen kann, das ist mehr sowas wie ein
Mindestaußenabstand.
Wie herum die anderen Angaben zu verstehen sind, ist ja eine
reine Definitionssache, nichts, was man tiefgründig verstehen
könnte oder müßte …
Bei anderen Sprachen oder Konstruktionen kann das auch
wieder anders sein, etwa liegt bei SVG der Rahmen/gemalte
Rand (stroke) immer mittig auf dem Rand des Elementes,
das Element rect hat da auch width und height und die Breite
des Randes wird mit stroke-width angegeben, da kommt man
dann offenbar auf eine Gesamtbreite von width + stroke-width,
während die Breite innerhalb des Rahmens nur width - stroke-width
ist, da gibt es auch nichts tiefgründig zu verstehen, ist eben eine
andere Definition.
Bei der CSS-Eigenschaft outline liegt die Sache auch bereits
anders, auch da wird anders mit der Breite des outline gerechnet
als mit der Breite von border.
Also ich find die Grafik von Selfhtml ziemlich verständlich.
Nachdem ich nun das Problem von vorher gelöst habe, hänge ich schon beim nächsten fest.
Und zwar geht es darum, dass, wenn der Inhalt des divs #main niedriger ist als der des divs #nav, so „rutscht“ der div #nav immer über die unteren Bereiche darüber.