Neo: width:100% und margin-right Unterschiede

Hi,

vor ein paar Tagen hat mir hier schon jemand wunderbar geholfen mit einem Spalten-Layout, bei dem die rechte Spalte durch einen Div-Bereich fester Breite und die linke durch margin-right auf den Rest des Screen ausgedehnt wird.

Aber der Teufel steckt ja bekanntlich im Detail und jetzt gibt es ein kleines (um genauzusein 15 Pixel großes) Problem mit der Gesamtbreite.

Beide "Spalten" befinden sich in einem absolut positionierten Div-Bereich bei 0,0. Damit der Inhalt auch die volle Screen-Breite erhält, ist die Breite mit 100% angegeben. Mit dem IE funktioniert das auch perfekt, aber Mozilla und Opera scheinen 100% als komplette Fensterbreite inklusive vertikale Scrollbar zu verstehen. Ebenso wird ein margin-right scheinbar auf die Fensterbreite inkl. Scrollbar angewendet.

Ist das so die korrekte Darstellung laut W3C?

Wenn ja, gibt es eigentlich eine Möglichkeit, gleich im CSS eine Unterscheidung zwischen IE und Rest der Browserwelt zu machen ohne die Styles (z.B. den margin-right) holprig über Javascript zu ändern?

Vielen Dank an alle :)

  1. Hallo,

    Die genaue Angabe der Browser (Versionen!) sowie
    die URL der Seite waeren extrem hilfreich bei
    der Problemanalyse... ;-)
    Und sonst mindestens die ersten paar Zeilen
    Deiner HTML-Datei, damit man sieht, in welchen
    Render-Modus (Quirks/Standard) Du die Browser
    damit versetzt.
    http://gutfeldt.ch/matthias/articles/doctypeswitch.html
    http://gutfeldt.ch/matthias/articles/doctypeswitch/table.html

    Wenn ja, gibt es eigentlich eine Möglichkeit, gleich im CSS eine Unterscheidung zwischen IE und Rest der Browserwelt zu machen ohne die Styles (z.B. den margin-right) holprig über Javascript zu ändern?

    Du bist vermutlich ein Opfer des kaputten Box Modells von MS IE
    und suchst nach dem "Box Model Hack".
    http://www.google.com/search?q=box+model+hack
    http://tantek.com/CSS/Examples/boxmodelhack.html

    Denk daran, dass auch <html> in gewissen Browsern (Opera?)
    noch ein margin oder padding hat. Probier's mal mit:

    html, body { margin:0; border:0; padding:0; width:100%; }

    (IIRC hat mich kuerzlich jemand darauf hingewiesen, dass
    <html> eigentlich keine Box ist oder so. Aber obiges
    sollte trotzdem valides CSS sein.)

    Gruesse,

    Thomas

  2. hallo,

    Wenn ja, gibt es eigentlich eine Möglichkeit, gleich im CSS eine Unterscheidung zwischen IE und Rest der Browserwelt zu machen ohne die Styles (z.B. den margin-right) holprig über Javascript zu ändern?

    ja, leider kennen nicht alle das ausnahmsweise sinnvolle feuture vom msie - die conditional comments. mehr darüber erfährst du unter http://msdn.microsoft.com/workshop/author/dhtml/overview/ccomment_ovw.asp

    mit freundlichen grüßen
       dimitri rettig