Kamikaze: Problem mit padding-right & width ab Netscape 6.0

Hallo zusammen,

Habe folgendes Problem in Netscape 6.2 + 7:

Ein DIV wird mit einer width von 490px und einem padding-right von 24px definiert. Im Netscape wird jetzt der padding-right zur width hinzugerechnet und die Gesamtbreite erhoeht sich auf 514px. Das habe ich exakt mit dem Programm "Cool Ruler" nachgemessen. Im Explorer bleibt die width bei 490px bestehen.

Hier mal ein Stueck Beispielcode:

<div id="Ueberschrift" style="overflow:hidden;position:absolute;margin-top:164;margin-left:464;width:490;height:35;z-index:60;padding-left:0;padding-top:0;padding-right:24;padding-bottom:0;" class="c_background b_normal d_normal_font"><div align="right"><span class="d_subtitle_font b_subtitle">1997 - Kunstkalender Naegele</span></div>

Frage: Was kann Netscape dazu veranlassen den Innenabstand rechts zur Gesamtbreite zu rechnen? Ich habe auch mal auf http://www.richinstyle.com/bugs/mozilla.html geschaut ob es sich um einen bekannten Bug handelt, habe aber dort nichts gefunden.
In den Stylesheets sind fuer die Fonts keine Angaben definiert welche die Angaben im DIV ueberschreiben koennten. Der DIV mit align="right" hat auch keinen Einfluss auf das padding-right, ordnet den Text aber rechts an.

Zur Not muss ich halt eine JS-Funktion schreiben die den padding-right vom left-Wert abzieht, dann sollte es auch wieder passen. Das Problem ist nur das die DIVS aus XSL uber Javascript mit Konstruktor-Funktionen dynamisch erzeugt werden und eine solche "Kruecke" moglicherweise Auswirkungen hat die man jetzt noch nicht absehen kann, soll heissen ich mochte am bestehenden Code so wenig wie moeglich aendern.

--> zur Erklaerung: Das Projekt war bisher fuer ein Intranet nur fuer Explorer ab 5.0 entwickelt und soll jetzt mittels DOM auch ab Netscape 6.0 laufen.

Falls jemand eine tolle Idee hat...

Gruss Andre

  1. Tach auch,

    Habe folgendes Problem in Netscape 6.2 + 7:

    Nein, Du hast ein Problem mit dem IE.

    Ein DIV wird mit einer width von 490px und einem padding-right von 24px definiert. Im Netscape wird jetzt der padding-right zur width hinzugerechnet und die Gesamtbreite erhoeht sich auf 514px.

    Was korrekt ist.

    Im Explorer bleibt die width bei 490px bestehen.

    Was falsch ist.

    Frage: Was kann Netscape dazu veranlassen den Innenabstand rechts zur Gesamtbreite zu rechnen? Ich habe auch mal auf http://www.richinstyle.com/bugs/mozilla.html geschaut ob es sich um einen bekannten Bug handelt, habe aber dort nichts gefunden.

    Kannst Du ja auch nicht, da es sich nicht um einen Bug handelt. Der Bug ist im IE, der die Breite falsch berechnet.

    --> zur Erklaerung: Das Projekt war bisher fuer ein Intranet nur fuer Explorer ab 5.0 entwickelt und soll jetzt mittels DOM auch ab Netscape 6.0 laufen.

    Wo Dein Problem herkommt, denn gerade der IE5 hat dieses Problem.

    Falls jemand eine tolle Idee hat...

    Such mal in der Suchmaschine Deines Vertrauens nach CSS Box Model Hack.

    Wahrscheinlich wirst Du das hier finden: http://www.tantek.com/CSS/Examples/boxmodelhack.html

    Gruss,
    Armin

    --
    Location: Swindon/England/UK/Europe/Northern Hemisphere/Planet Earth/Solar system/Universe
    1. Hi Armin,

      Falls jemand eine tolle Idee hat...

      Such mal in der Suchmaschine Deines Vertrauens nach CSS Box Model Hack.

      wobei 'Doctype switching' als Suchbegriff wohl schneller zum Ziel führt ;)

      LG Roland

      --
      Warum schreibst *DU* keinen Beitrag? Fauler Sack. Konsument!
      http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm
      1. Habe folgendes Problem in Netscape 6.2 + 7:

        Nein, Du hast ein Problem mit dem IE.

        Ein DIV wird mit einer width von 490px und einem padding-right von 24px definiert. Im Netscape wird jetzt der padding-right zur width hinzugerechnet und die Gesamtbreite erhoeht sich auf 514px.

        Was korrekt ist.

        Im Explorer bleibt die width bei 490px bestehen.

        Was falsch ist.

        Danke erstmal fuer die flotte Hilfe!
        Also auch gut, dann ist es der IE... da bleibt ja kein Auge trocken *g*! Ich weiss jetzt nicht ob ich die Style-Angaben wie in dem Beispiel auslagern kann, da ja die Werte dynamisch mittels XSL in den DIV geschrieben werden. Das Beispiel sollte ja IMO aber auch bei Style-Angaben innerhalb des Tags funktionieren, mal testen.

        Soweit so gut, was mich jetzt noch BTW wundert ist, dass wenn ich diese Style-Angaben (also vor allem width und padding-right) auf eine Tabelle anwende, dann bei _beiden_ Browsern die width unveraendert bleibt (490px). Hab ich ebenfalls mit Cool Ruler nachgemessen ;-)

        Zum Beispiel:
        <table style="overflow:hidden; position:absolute; width:490; padding-left:0; padding-top:0; padding-right:24; padding-bottom:0; background-color: #D4D0C8;">
          <tr>
            <td>TEST</td>
          </tr>
        </table>

        Daraus habe ich dann geschlossen das wohl etwas mit Netscape nicht stimmt, Begruendung:
        Bei width lege ich doch eine fixe Breite des Elementes fest (490px), sage er sollen einen rechten Innenabstand von 24px halten, dann ist es IMO richtig wenn diese 24px nach innen berechnet werden, also sollte dies abgezogen anstatt addiert werden (meinem Verstaendnis nach), so wie es auch bei der Tabelle nicht aber beim DIV geschieht. Eventuell wird ein DIV auch als ein "flexibleres" Element behandelt? Keine Ahnung, vielleicht kann mit jemand von Euch das genauer erlaeutern?
        Das nur mal noch als Anmerkung wie ich mir das zusammenreimte :-)

        Danke und Gruss
        Andre

        1. Hi Andre,

          Also auch gut, dann ist es der IE... da bleibt ja kein Auge trocken *g*!

          im Zweifelsfall macht er es *immer* falsch und ist zum Testen daher denkbar ungeeignet. Falschen Code korrigiert er intern, Fehler fallen daher nicht auf. Außerdem kann er bei weitem nicht alles. Gutgemeinter Rat: Finger weg bei der Seitenerstellung.

          Ich weiss jetzt nicht ob ich die Style-Angaben wie in dem Beispiel auslagern kann, da ja die Werte dynamisch mittels XSL in den DIV geschrieben werden. Das Beispiel sollte ja IMO aber auch bei Style-Angaben innerhalb des Tags funktionieren, mal testen.

          Tun sie.

          Soweit so gut, was mich jetzt noch BTW wundert ist, dass wenn ich diese Style-Angaben (also vor allem width und padding-right) auf eine Tabelle anwende, dann bei _beiden_ Browsern die width unveraendert bleibt (490px).

          Teste nochmal mit border und margin, nicht mit padding, das wirkt auf <table> nicht.

          Bei width lege ich doch eine fixe Breite des Elementes fest (490px), sage er sollen einen rechten Innenabstand von 24px halten, dann ist es IMO richtig wenn diese 24px nach innen berechnet werden, also sollte dies abgezogen anstatt addiert werden (meinem Verstaendnis nach)

          Es ist aber schlicht und ergreifend andersrum definiert: Breite des Elements = width + margin + border ;)

          Eventuell wird ein DIV auch als ein "flexibleres" Element behandelt?

          Ist es ja strenggenommen auch. Wenn du dich näher für das Box Model interessierst:

          http://www.w3.org/TR/CSS2/box.html#box-dimensions

          LG Roland

          --
          Warum schreibst *DU* keinen Beitrag? Fauler Sack. Konsument!
          http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm
          1. Hallo an die Checker,

            vielen Dank fuer die ausfuehrliche Hilfe und Erklaerung, jetzt sehe ich die Sache ein wenig klarer und auch unter einem anderen Licht :-)

            Gruss Andre

  2. Hi!

    Noch ein Nachtrag. Du kannst selbst beim IE nicht davon ausgehen, das er sich ewig an sein falsches Modell hält. Schreibst du eine gültige Seite und schaltest den IE6 in den standards-compliant mode, berechnet er die Breite von Boxen genauso wie der NN6 aufwärts, ssprich, die Breite wird auf Basis des Elementinhalts berechnet, border und padding werden dazu gerechnet..
    Siehe auch: < http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnie60/html/cssenhancements.asp>

    Gruß Herbalizer