André Laugks: Position von Rahmen

Hallo!

Ich möchte um ein Bild ein Rahmen legen. Dem Bild möchte ich den Rahmen nicht geben. Um das Bild packe ich ein div, dem ich den Rahmen gebe. Je nach dem wie breit ich das div mache, fällt der Rahmen nach innen oder außen, naja nicht immer eben...

Hier mal ein Beispiel:
http://www.pb82.de/_extern/selfforum/2003_11_22/border/border.html

Oder wenn ich einem div einen Rahmen gebe, und nur Text in das div schreibe, fallen die Rahmen nach innen.

Gibt es da ein Modell/Konzept, so wie das Boxmodell?

MfG, André Laugks

--
L-Andre @ gmx.de
  1. hi,

    Ich möchte um ein Bild ein Rahmen legen. Dem Bild möchte ich den Rahmen nicht geben. Um das Bild packe ich ein div, dem ich den Rahmen gebe.

    warum? was spricht konkret dagegen, dem bild den rahmen zu geben?

    Je nach dem wie breit ich das div mache, fällt der Rahmen nach innen oder außen, naja nicht immer eben...

    eventueller workaround: du benutzt kein border, sondern eine entsprechende hintergrundfarbe für den div, und erzeugst die "rahmenbreite" über padding.

    gruss,
    wahsaga

    1. Hallo!

      warum? was spricht konkret dagegen, dem bild den rahmen zu geben?

      Das ist eigentlich eine gute Frage! Ich werde jetzt wohl doch die Ränder im img-Tag definieren.

      MfG, André Laugks

      --
      L-Andre @ gmx.de
  2. Hallo,

    Ich möchte um ein Bild ein Rahmen legen. Dem Bild möchte ich den Rahmen nicht geben.

    Warum? Das waere doch das einfachste.

    Um das Bild packe ich ein div, dem ich den Rahmen gebe. Je nach dem wie breit ich das div mache, fällt der Rahmen nach innen oder außen, naja nicht immer eben...

    Hier mal ein Beispiel:
    http://www.pb82.de/_extern/selfforum/2003_11_22/border/border.html

    Du willst also einen "soliden" Rahmen von 8px um ein Bild von 128 x 128px.

    width bezieht sich ja auf den Inhalt, also sollte es bei Dir 128px sein (Beispiel 2)
    und nicht 144px (Beispiel 1).

    Im zweiten Beispiel macht ja nur der Netscape 7 (d.h. Gecko und somit auch Mozilla) "Macken".
    Versuch's mal mit
    div img { display:block; }
    Siehe:
    http://devedge.netscape.com/viewsource/2002/img-table/
    http://www.dodabo.de/html+css/img-table/

    Oder wenn ich einem div einen Rahmen gebe, und nur Text in das div schreibe, fallen die Rahmen nach innen.

    Ich verstehe nicht, was Du damit ("nach innen/aussen fallen") meinst.

    Gruesse,

    Thomas

    1. Hallo!

      width bezieht sich ja auf den Inhalt, also sollte es bei Dir 128px sein (Beispiel 2)
      und nicht 144px (Beispiel 1).

      rrrhhhhhh! :-( Ich habe einen Dreher in meinem Beispiel.

      Das erste Beispiel sollte 128px bekommen und das zweite 144px.
      http://www.pb82.de/_extern/selfforum/2003_11_22/border/border.html

      Im ersten Beispiel macht Opera und im zweiten Netscape Macken.

      Ich verstehe nicht, was Du damit ("nach innen/aussen fallen") meinst.

      Wenn ich das div 128px breit machen, ist der Rahmen außerhalb des div's. Mache ich das div 144px breit, ist der Rahmen innerhalb des div's.

      MfG, André Laugks

      --
      L-Andre @ gmx.de
      1. Hallo Andre,

        Im ersten Beispiel macht Opera und im zweiten Netscape Macken.

        Wie erwaehnt, wuerde ich bei validem Code einen Opera-Bug ignorieren.
        Es sei denn,
        a) Opera ist Dein Lieblingsbrowser
        b) Du schaust die Seite taeglich 10 mal an...

        Wenn ich das div 128px breit machen, ist der Rahmen außerhalb des div's. Mache ich das div 144px breit, ist der Rahmen innerhalb des div's.

        Ich verstehe Dich immer noch nicht.

        Die Box hat (von innen nach aussen): Inhalt (Content), Padding, Border, Margin:
        http://www.w3.org/TR/REC-CSS2/box.html#box-dimensions

        Der Rahmen (border) ist immer ausserhalb des Contents.
        Und er ist immer Bestandteil der Box, die durch den DIV erzeugt wird.
        Aber es gibt kein "innerhalb/ausserhalb des DIVs".
        Wie moechtest Du das ueberhaupt unterscheiden?

        Gemaess der Spezifikation ist mit width die Breite des Contents gemeint.
        Der doofe MS IE (bis 5.5, bzw. im 6.0 im Quirks Modus) versteht unter
        width die Breite der ganzen Box. Das ist das kaputte Box Modell des MS IE.
        Und dafuer gibt es z.B. den Hack von Tantek:
        http://tantek.com/CSS/Examples/boxmodelhack.html

        Wenn schon wuerde ich erwarten, dass sich in Deinem Beispiel
        ein kaputter MS IE etwa so verhaelt, wie Opera es tut.
        Fuer den MS IE bliebe bei width:128px und border:8px ja
        nur noch 128-16=112px Platz fuer den Content.
        Der Content (das Bild) ist aber 128px breit.
        Also sollte wenn schon der MS IE Probleme machen.

        Ach, was soll's.
        Mach lieber eine einfache Loesung mit moeglichst kurzem
        und uebersichtlichem HTML im bisherigen DOCTYPE.
        Und vergiss Opera, das hier offenbar einen seinen zahlreichen
        Bugs hat.

        Wenn ein Opera-Benutzer _echte_ Probleme mit der Anzeige hat, kann
        er ja immer noch mit einem Mausklick (oder Ctrl-G) das CSS
        ausschalten oder sein Benutzerstylesheet einschalten.
        Und fuer optische Details wie einen Zier-Rahmen waere
        mir die Zeit zu schade.

        Gruesse + schoenen Abend,

        Thomas

        1. Hallo!

          Ich verstehe Dich immer noch nicht.

          Wenn ich das DIV auf 128 Pixel setze, scheint ja wohl der Border außerhalb des DIV zu sein.

          gelb: Rand-DIV und Rand-Bild
          <img src="http://www.pb82.de/_extern/selfforum/2003_11_23/bild_aussen.jpg" border="0" alt="">

          Wenn ich das DIV auf 144 Pixel setze, scheint ja wohl der Border innerhalb des DIV zu sein.

          grün: Rand-Bild
          rot: Rand-DIV
          <img src="http://www.pb82.de/_extern/selfforum/2003_11_23/bild_innen.jpg" border="0" alt="">

          Die Box hat (von innen nach aussen): Inhalt (Content), Padding, Border, Margin:
          http://www.w3.org/TR/REC-CSS2/box.html#box-dimensions

          Laut dem Boxmodell sollte nun das DIV auf 144 Pixel verbreitet werden, wenn ich 128 Pixel angeben...

          Wenn ein Opera-Benutzer _echte_ Probleme mit der Anzeige hat, [...]

          Mir ist so, daß Opera was CSS angeht, daß Maß ist.

          MfG, André Laugks

          --
          L-Andre @ gmx.de
          1. So, die Bild-URL war falsch.

            Wenn ich das DIV auf 128 Pixel setze, scheint ja wohl der Border außerhalb des DIV zu sein.

            gelb: Rand-DIV und Rand-Bild
            <img src="http://www.pb82.de/_extern/selfforum/2003_11_23/border_aussen.jpg" border="0" alt="">

            Wenn ich das DIV auf 144 Pixel setze, scheint ja wohl der Border innerhalb des DIV zu sein.

            grün: Rand-Bild
            rot: Rand-DIV
            <img src="http://www.pb82.de/_extern/selfforum/2003_11_23/border_innen.jpg" border="0" alt="">

            MfG, André Laugks

            --
            L-Andre @ gmx.de
            1. Hallo,

              Wenn ich das DIV auf 128 Pixel setze, scheint ja wohl der Border außerhalb des DIV zu sein.
              gelb: Rand-DIV und Rand-Bild

              Wenn ich das DIV auf 144 Pixel setze, scheint ja wohl der Border innerhalb des DIV zu sein.
              grün: Rand-Bild
              rot: Rand-DIV

              Ich verstehe Deine Begriffe nicht.

              Ich vermute, dass Du sowohl dem Bild als auch dem DIV
              eine Border-Eigenschaft zuweist. Aber ich kapier nicht,
              was Du meinst.

              Unter Rand-DIV kann ich mir nichts vorstellen.
              Und Rand-Bilder wird es erst mit CSS3 geben:
              http://www.w3.org/TR/css3-border/#the-border-image

              Bitte mach doch nochmal eine Testseite, mit dem CSS im <STYLE> im HEAD,
              mit den DIVs/Bildern an sich und mit den Screenshots.

              Oder poste wenigstens hier jeweils den CSS-Code bei den entsprechenden Bildern.

              Gruesse,

              Thomas

  3. Hallo André,

    Ich möchte um ein Bild ein Rahmen legen.
    Hier mal ein Beispiel:
    http://www.pb82.de/_extern/selfforum/2003_11_22/border/border.html

    Wenn ich das so mache:

    <?xml version="1.0"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
       <head>
          <title></title>
       </head>
       <body>
        <div style="border:#990000 8px solid;width:128px;height:128px;"><img src="egon.jpg" width="128" height="128" alt="" border="0" /></div>
       </body>
    </html>

    machen es alle Browser richtig (auch der NS 4.x).
    Wenn du kein XHTML verwenden kannst/willst kannst du es so machen:
    <html>
       <head>
          <title></title>
       <style type="text/css">
        img { border:#990000 8px solid; }
       </style>
       </head>
       <body>
        <img src="egon.jpg" width="128" height="128" alt="" border="0" />
       </body>
    </html>

    da spielen bis auf NS 4.x auch alle Browser mit.

    Grüße
    Thomas

    1. Hallo (auch) Thomas,

      Wenn ich das so mache:
      <?xml version="1.0"?>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
         <!-- SNIP -->
          <div style="border:#990000 8px solid;width:128px;height:128px;"><img src="egon.jpg" width="128" height="128" alt="" border="0" /></div>
      machen es alle Browser richtig (auch der NS 4.x).

      Auch der MS IE 5 (kaupttes Box-Modell)?
      Vermutlich ja schon, weil der Inhalt hier eine "physische" Groesse hat.

      Wenn du kein XHTML verwenden kannst/willst kannst du es so machen:
          img { border:#990000 8px solid; }
          <img src="egon.jpg" width="128" height="128" alt="" border="0" />
      da spielen bis auf NS 4.x auch alle Browser mit.

      So wuerde ich es auch machen. Der DIV ist IMHO ueberfluessig.

      Was mich aber wunder nimmt:
      Warum "funktioniert" (gemaess Deiner Aussage, und ich vermute, Du hast es getestet)
      <div style="border:#990000 8px solid;width:128px;height:128px;"><img src="egon.jpg" width="128" height="128" alt="" border="0"></div>
      nicht browseruebergreifend in HTML 4?
      Warum nur in XHTML?

      Gruesse,

      Thomas

      1. Hallo Thomas ;-)

        Warum "funktioniert" (gemaess Deiner Aussage, und ich vermute, Du hast es getestet)
        <div style="border:#990000 8px solid;width:128px;height:128px;"><img src="egon.jpg" width="128" height="128" alt="" border="0"></div>
        nicht browseruebergreifend in HTML 4?
        Warum nur in XHTML?

        Weil Opera (7) zu dumm ist?
        Der war der Einzige der das in HTML nicht darstellen konnte/wollte.

        Grüße
        Thomas

        1. Hallo,

          Warum nur in XHTML?
          Weil Opera (7) zu dumm ist?
          Der war der Einzige der das in HTML nicht darstellen konnte/wollte.

          Ach so. Danke fuer die Aufklaerung.

          Ich wuerde in so einem Fall (optisches Detail) den Opera ignorieren.

          Und die einfachste Loesung mit validem HTML+CSS verwenden,
          die in den relevanten Browsern funktioniert, d.h. in den Browsern, welche
          1. den groessten Teil des Kuchens ausmachen (MS IE 5 - 6)
          2. die Seite gemaess den Standards anzeigen (Mozilla)

          Bloss wegen einem Opera-7-Bug wuerde ich weder auf XHTML umstellen
          noch mit irgendwelchen ueberfluessigen DIVs meinen Quellcode aufblaehen.

          Gruesse,

          Thomas

          1. Hallo.

            Bloss wegen einem Opera-7-Bug wuerde ich weder auf XHTML umstellen
            noch mit irgendwelchen ueberfluessigen DIVs meinen Quellcode aufblaehen.

            Nachdem zum x-ten mal deine Präferenzen bezüglich der Browser geklärt wären, stellt sich nur noch die Frage, welche nachvollziehbaren Nachteile XHTML-Seiten haben.
            MfG, at

            1. Hallo,

              Bloss wegen einem Opera-7-Bug wuerde ich weder auf XHTML umstellen [...]
              [...] stellt sich nur noch die Frage, welche nachvollziehbaren Nachteile XHTML-Seiten haben.

              XHTML-Seiten an sich haben wohl keine/kaum Nachteile,
              solange man rueckwaerts-kompatibel schreibt.

              Aber der Prozess des Umwandelns kann - je nach Anzahl Dokumente
              und Umwandlungs-Methode - sehr, sehr zeitaufwendig sein.

              Ein unbedeutender "aesthetischer" Browser-Bug waere fuer
              mich kein Grund, x bis zig Stunden fuer die Konvertierung
              HTML -> XHTML aufzuwenden, zumal ich keinen wirklichen
              und praktischen  Vorteil von XHTML 1.0 Strict gegenueber
              HTML 4.01 Strict sehe, solange man nicht MathML, SVG
              oder aehnliche Dinge benutzt.

              http://www.netandmore.de/faq/fom-serve/cache/1255.html
              http://www.netandmore.de/faq/fom-serve/cache/1256.html
              http://www.netandmore.de/faq/fom-serve/cache/1257.html
              u.s.w. vermoegen mich nicht zu ueberzeugen, bestehende alte
              HTML-4-Seiten im XHTML umzuwandeln...

              Gruesse,

              Thomas

              1. Hallo.

                XHTML-Seiten an sich haben wohl keine/kaum Nachteile,
                solange man rueckwaerts-kompatibel schreibt.

                Davon war ich ausgegangen.

                Aber der Prozess des Umwandelns kann - je nach Anzahl Dokumente
                und Umwandlungs-Methode - sehr, sehr zeitaufwendig sein.

                Okay, darin gebe ich dir natürlich Recht. Dir ging es also nur um die Umwandlung, nicht um den Standard selbst. -- Und ich hatte schon gegrübelt ;-)
                MfG, at

                1. Hallo,

                  Okay, darin gebe ich dir natürlich Recht. Dir ging es also nur um die Umwandlung, nicht um den Standard selbst. -- Und ich hatte schon gegrübelt ;-)

                  nachdem in HTML strict und XHTML kaum Unterschiede bestehen, in XHTML also denn auch eigentlich nur "HTML" drinnensteckt, und grundsätzlich HTML abwärtskompatibler ist, wo soll eigentlich der Vorteil von XHTML sein?

                  HTML dürfte selbst in fernerer Zukunft von den Browsern unterstützt werden. Also nur unauffällige Manipulation des Rendermodus und etwas XML-Hype?

                  Grüsse

                  Cyx23

                  1. Hallo.

                    nachdem in HTML strict und XHTML kaum Unterschiede bestehen, in XHTML also denn auch eigentlich nur "HTML" drinnensteckt, und grundsätzlich HTML abwärtskompatibler ist, wo soll eigentlich der Vorteil von XHTML sein?

                    Nachdem zwischen HTML und XHTML kaum Unterschiede bestehen, XHTML also auch eigentlich "nur" HTML beinhaltet und damit per se abwärtskompatibel ist, wo soll eigentlich der Nachteil von XHTML sein?

                    HTML dürfte selbst in fernerer Zukunft von den Browsern unterstützt werden. Also nur unauffällige Manipulation des Rendermodus und etwas XML-Hype?

                    Je strikter der Dokumententyp, desto leichter fällt mir persönlich die rein semantische Auszeichnung. Und wenn eines meiner Dokumente validiert und dank CSS dennoch so aussieht wie ich es mir vorstelle, kann ich mir einigermaßen sicher sein, ein sauberes, logisch strukturiertes und für mich auch in einigen Jahren noch problemlos nachvollziehbares Produkt erzeugt zu haben.
                    Ich möchte diese Ansicht nicht verallgemeinern, aber auf mich trifft sie eben zu.
                    MfG, at

                    1. Hallo,

                      Je strikter der Dokumententyp, desto leichter fällt mir persönlich die rein semantische Auszeichnung. Und wenn eines meiner Dokumente validiert und dank CSS dennoch so aussieht wie ich es mir vorstelle, kann ich mir einigermaßen sicher sein, ein sauberes, logisch strukturiertes und für mich auch in einigen Jahren noch problemlos nachvollziehbares Produkt erzeugt zu haben.

                      da sehe ich erstmal gar keinen Unterschied zwischen HTML 401 strict und XHTML, und gegenüber anderen HTML-Versionen wird eben CSS bedeutsamer.

                      Und da es genug Webseiten ohne strenge eindimensionale Hirarchie im "Dokument" gibt (oder gar Positionierungen auf dem Bildschirm selbst Bedeutung haben), verschiebt sich Bedeutung (oder auch mal potenzielle Fehlinterpretation) entweder in die Stylesheets oder auf nötige aber als inhaltliche Struktur unklare Containerdivs; das dürfte aber eben bei HTML und XHTML ähnlich passieren.

                      Nachdem zwischen HTML und XHTML kaum Unterschiede bestehen, XHTML also auch eigentlich "nur" HTML beinhaltet und damit per se abwärtskompatibel ist, wo soll eigentlich der Nachteil von XHTML sein?

                      Ich kann da nur Vermutungen anstellen, z.B. Fehler bei einigen Browsern wie als harmloseres Beispiel beim IE 3, der <?xml version="1.0"?> als Text anzeigt. Vielleicht sind ja Parsingerror durch nicht abgeschlossene Tags möglich.

                      Grüsse

                      Cyx23

                      1. Hallo.

                        da sehe ich erstmal gar keinen Unterschied zwischen HTML 401 strict und XHTML, und gegenüber anderen HTML-Versionen wird eben CSS bedeutsamer.

                        Ein Unterschied ist zum Beispiel der, dass der Validator ein bei mir versehentlich übrig gebliebenes "target"-Attribut anmeckert, dass ich ansonsten wohl übersehen hätte.

                        Und da es genug Webseiten ohne strenge eindimensionale Hirarchie im "Dokument" gibt [...]

                        Stop! Ich hatte vom _meinen_ Dokumenten gesprochen. Was in den Weiten des Netzes geschieht, entzieht sich meines Einflusses und zum überwiegenden Teil auch meines Interesses -- was in Anbetracht der Menge von Seiten sicher nicht nur mir so geht.

                        Ich kann da nur Vermutungen anstellen, z.B. Fehler bei einigen Browsern wie als harmloseres Beispiel beim IE 3, der <?xml version="1.0"?> als Text anzeigt. Vielleicht sind ja Parsingerror durch nicht abgeschlossene Tags möglich.

                        Und ausgerechnet dies Angabe ist nirgends verpflichtend, oder? ;-)
                        MfG, at

                        1. Hallo,

                          da sehe ich erstmal gar keinen Unterschied zwischen HTML 401 strict und XHTML, und gegenüber anderen HTML-Versionen wird eben CSS bedeutsamer.

                          Ein Unterschied ist zum Beispiel der, dass der Validator ein bei mir versehentlich übrig gebliebenes "target"-Attribut anmeckert, dass ich ansonsten wohl übersehen hätte.

                          HTML 401 strict sollte doch auch kein "target"-Attribut aufweisen?

                          Und da es genug Webseiten ohne strenge eindimensionale Hirarchie im "Dokument" gibt [...]

                          Stop! Ich hatte vom _meinen_ Dokumenten gesprochen. Was in den Weiten des Netzes geschieht, entzieht sich meines Einflusses und zum überwiegenden Teil auch meines Interesses -- was in Anbetracht der Menge von Seiten sicher nicht nur mir so geht.

                          Potenziell würde ich eine gewisse Mehrdimensionalität erstmal allen Dokumenten zutrauen.

                          Ich kann da nur Vermutungen anstellen, z.B. Fehler bei einigen Browsern wie als harmloseres Beispiel beim IE 3, der <?xml version="1.0"?> als Text anzeigt. Vielleicht sind ja Parsingerror durch nicht abgeschlossene Tags möglich.

                          Und ausgerechnet dies Angabe ist nirgends verpflichtend, oder? ;-)

                          ..aber ein Beispiel für unterschiedliches Browserverhalten bei Unterschieden im "HTML", aber wenn natürlich der IE 3 sonst damit klarkommt sollte es hoffentlich bei anderen Clients auch laufen. Allerdings sind solche xml-Deklarationen vermutlich auch ein Grund XHTML einzusetzen und dabei unauffällig den IE 6 auf einen bestimmten Rendermodus zu stellen, auch wenn das auf deine Dokumente nicht zutreffen mag.

                          Grüsse

                          Cyx23

                          1. Hallo.

                            Ein Unterschied ist zum Beispiel der, dass der Validator ein bei mir versehentlich übrig gebliebenes "target"-Attribut anmeckert, dass ich ansonsten wohl übersehen hätte.

                            HTML 401 strict sollte doch auch kein "target"-Attribut aufweisen?

                            Das mag sogar stimmen, aber es war tatsächlich nur ein Beispiel.

                            Potenziell würde ich eine gewisse Mehrdimensionalität erstmal allen Dokumenten zutrauen.

                            Das ist sicher eine Definitionsfrage, aber ich wollte auch nicht über andere herziehen, sondern nur betonen, wie egal mir diesbezüglich die Vorgehensweisen anderer sind, sofern sie mich nicht einschränken.

                            Ich kann da nur Vermutungen anstellen, z.B. Fehler bei einigen Browsern wie als harmloseres Beispiel beim IE 3, der <?xml version="1.0"?> als Text anzeigt. Vielleicht sind ja Parsingerror durch nicht abgeschlossene Tags möglich.

                            Und ausgerechnet dies Angabe ist nirgends verpflichtend, oder? ;-)

                            ..aber ein Beispiel für unterschiedliches Browserverhalten bei Unterschieden im "HTML", aber wenn natürlich der IE 3 sonst damit klarkommt sollte es hoffentlich bei anderen Clients auch laufen. Allerdings sind solche xml-Deklarationen vermutlich auch ein Grund XHTML einzusetzen und dabei unauffällig den IE 6 auf einen bestimmten Rendermodus zu stellen, auch wenn das auf deine Dokumente nicht zutreffen mag.

                            Eben. Ich kann damit leben, bezwecke es aber nicht. Mir ist auch ziemlich egal, in welchem Modus sich ein IE neuerer Generation befindet oder wie man ihn in diesen versetzt, da ich mich auch um ältere Versionen kümmern muss -- jedenfalls in einem gewissen Maße, das ich im Regelfall gemeinsam mit meinem Auftraggeber bestimme.
                            MfG, at