Der Martin: margin:auto hat keine Wirkung. Finde den Fehler nicht

Beitrag lesen

Hi,

Nun versuche ich gerade eine kleine Homepage für meine Freundin zu schreiben und die möchte ich mal "richtig" mit CSS formatieren.

eine löbliche Absicht. ;-)

Ein Bild soll oben auf der Seite zentriert erscheinen.
Dies habe ich per margin:auto versucht. Hier mal der code:

#menuom {
position:absolute;
top:0px;
height:51px;
width:300px;
margin:0px auto;
border:0px solid #000000;
padding:0;
}

Du hast das Element absolut positioniert und damit aus dem Kontext der restlichen Seite herausgenommen.
Versuche, absolute Positionierung soweit wie möglich zu vermeiden. Das Thema ist nicht trivial zu verstehen; meistens versuchen Anfänger damit, ihre Elemente irgendwo auf der Seite festzukleben, obwohl es sehr viel elegantere und oft auch einfachere Möglichkeiten gibt (z.B. float oder margins und paddings). Absolute Positionierung hat, wenn man sie nicht vollständig versteht, so viele überraschende Nebenwirkungen, dass ich Anfängern grundsätzlich davon abraten würde.

Das Bild erscheint bei mir immer ganz links im Browser.

Richtig. Vermutlich bezieht sich die absolute Positionierung in deinem Kontext auf das Browserfenster. Deine Positionsangabe ist top:0px (ganz oben), aber für left machst du keine Angabe. Es gilt also der Defaultwert 0 (ganz links).

Nebenbei: Wenn du die position-Angabe einfach wieder weglässt, hast du schon beinahe das gewünschte Ergebnis. Die top-Eigenschaft wird dadurch natürlich auch wirkungslos, aber da sie ohnehin als 0 angegeben war, macht das keinen Unterschied.

<div id="menuom">
  <img src="../bilder/menu/steckbrief.gif" width="300" height="51" border="0" alt="Steckbrief">
</div>

Was soll eigentlich das div-Element? Es ist vollkommen überflüssig, wenn es nur dieses eine Bild enthält. Gib stattdessen direkt dem img-Element die ID und lass die CSS-Angaben direkt auf das Bild wirken. Ergänze evtl. ein display:block, wenn es sich wie ein Blockelement verhalten soll.

So long,
 Martin

--
Du kannst dem Leben nicht mehr Tage geben.
Aber dem Tag mehr Leben.