snorri: Workaround für <div>-Fehler in Opera?

Hej,

ich bin auf ein Problem gestoßen, das mir eine bestimmte Konstruktion unmöglich macht, weil sie den Inhalt eines DIVs im Opera unsichtbar macht. Die Konstruktion sieht so aus:

<table height="50%" width="100"><tr><td bgcolor="#0000FF">
<div style="height:100%; background-color:#FF0000; overflow:auto;">
(Inhalt)
</div>
</td></tr></table>

Im IE ist das entstehende DIV, wie es soll, 50% der zur Verfügung stehenden Höhe hoch, und wenn der Inhalt länger wird als das DIV, wird ein Scrollbar eingeblendet.

Im Netscape funktioniert das so nicht ganz, das DIV wird bei Bedarf nach unten verlängert und gegebenefalls bekommt die Seite einen Scrollbar, aber das ist auch noch OK.

Im Opera aber schnurrt das DIV anscheinend auf eine Höhe von Null zusammen, sobald der Inhalt länger wird als im DIV Platz ist. Der Inhalt wird damit kommentarlos unsichtbar.

Gibt es dafür einen Workaround?

-- snorri

PS Bitte fragt mich nicht, WARUM ich so eine Konstruktion brauche -- die Geschichte ist lang und langweilig ;-)

  1. hi,

    <table height="50%" width="100"><tr><td bgcolor="#0000FF">

    nein, table hat immer noch kein attribut namens height, und wird vermutlich auch nie mehr in seinem leben eins bekommen.

    formatierungen _ausschließlich_ mit CSS.

    gruß,
    wahsaga

    --
    Rest in peace, Dimebag!
    #
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. Hej wahsaga,

      gute Idee, aber den table mit STYLE statt HEIGHT zu formatieren ändert leider nichts an der Situation:

      <table style="height:50%; width:100px"><tr><td bgcolor="#0000FF">
      <div style="height:100%; background-color:#FF0000; overflow:auto;">
      (Inhalt)
      </div>
      </td></tr></table>

      Immer noch verschwindet das DIV, wenn es überfüllt wird.

      Ich habe auch schon mit verschiedenen DOCTYPEs rumgespielt, das hat auch zu nichts geführt.

      -- snorri

      1. Hi,

        <table style="height:50%;

        50% wovon?

        freundliche Grüße
        Ingo

        1. Hej Ingo,

          ist eigentlich egal, im konkreten Fall aber 50% der Fensterhöhe.

          -- snorri

          1. Hi,

            ist eigentlich egal, im konkreten Fall aber 50% der Fensterhöhe.

            und wie hoch ist das Fenster bis zu diesem Objekt?

            freundliche Grüße
            Ingo

            1. Hej Ingo,

              ich weiss nicht ganz, worauf Du hinaus willst ... das zitierte Beispiel ist eine Testdatei, die nicht anderes beinhaltet.

              Das Phänomen scheint an dem Zusammenspiel zweier Faktoren zu hängen: Die relative Höhenangabe der umschießenden Tabelle und das Attribut "overflow:auto". Lässt man eines davon weg, oder ersetzt man die Tabelle durch ein DIV mit 50% Höhe, taucht das innere DIV wieder auf. Leider istdas bei meiner Anwendung keine Lösung, ich brauche eine Tabellenzelle mit relativer Höhenangabe.

              -- snorri

              1. Hi,

                ich weiss nicht ganz, worauf Du hinaus willst

                ich will nur, daß Du mir bzw. eigentlich Dir selbst die Frage nach der Höhe des bzw. der Elternelemente beantwortest und hoffe, daß Du dann endlich den Zusammenhang entdeckst.

                freundliche Grüße
                Ingo

                1. Hej Ingo,

                  das Elternelement der Tabelle ist das Browserfenster, der Anzeigebereich ist bei der momentanen Auflösung 840 Pixel hoch. 50% davon sind 420, so hoch ist also die Tabelle. 100% davon sind nach meiner Rechnung ebenfalls 420, so hoch sollte also das DIV sein, es ist aber 0 Pixel hoch.

                  Nein, ich sehe da keinen Zusammenhang, tut mir leid ...

                  -- snorri

                  1. Hi,

                    das Elternelement der Tabelle ist das Browserfenster,

                    nein: body. Und dieser hat selbst auch noch ein Elternelement.

                    der Anzeigebereich ist

                    in diesem Zusammenhang belanglos.

                    freundliche Grüße
                    Ingo

                    1. Hej Ingo,

                      nichts gegen die sokratische Methode der Erkenntnis-Vermittlung, aber wenn Du mir sagen kannst, wie ich das Problem lösen kann bzw. dass es nicht lösbar ist, dann sag' es mir bitte und spann' mich nicht weiter auf die Folter :-)

                      der Anzeigebereich ist
                      in diesem Zusammenhang belanglos.

                      Das sehe ich auch so, ich wollte Dir damit nur zu verstehen geben, dass ich immer noch nicht weiss, worauf Du hinaus willst.

                      -- snorri

                      1. Hi,

                        nichts gegen die sokratische Methode der Erkenntnis-Vermittlung, aber wenn Du mir sagen kannst, wie ich das Problem lösen kann bzw. dass es nicht lösbar ist, dann sag' es mir bitte und spann' mich nicht weiter auf die Folter :-)

                        es sollte lösbar sein.

                        der Anzeigebereich ist
                        in diesem Zusammenhang belanglos.
                        Das sehe ich auch so, ich wollte Dir damit nur zu verstehen geben, dass ich immer noch nicht weiss, worauf Du hinaus willst.

                        darauf, welche Höhe Du body und html zugewiesen hast - ist das denn wirklich so schwer?

                        freundliche Grüße
                        Ingo

                        1. Hej Ingo,

                          mag sein, dass ich mit Blind- und/oder Blödheit geschlagen bin, aber selbst wenn ich sowohl <html> als auch <body> ein  style="height:100%;" zuweise (eine Idee, auf die ich noch nie gekommen bin), ändert sich überhaupt nichts. Zus Sicherheit nochmal der gesamte HTML-Code:

                          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

                          <html style="height:100%;">
                          <head>
                           <title>Test</title>
                          </head>

                          <body style="height:100%;">

                          <table style="height:50%; width:100px"><tr><td bgcolor="#0000FF">
                          <div style="height:100%; background-color:#FF0000; overflow:auto;">
                          A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>
                          </div>
                          </td></tr></table>

                          </body>
                          </html>

                          -- snorri

                          1. Hallo Snorri, Du verschwendest Deine Zeit. Der Typ hat offensichtlich keine
                            Ahnung, wovon er redet. Oder er verarscht Dich nur.

                            Armin

                          2. Hi,

                            mag sein, dass ich mit Blind- und/oder Blödheit geschlagen bin, aber selbst wenn ich sowohl <html> als auch <body> ein  style="height:100%;" zuweise (eine Idee, auf die ich noch nie gekommen bin), ändert sich überhaupt nichts.

                            dann wird es vermutlich daran liegen, daß in CSS 2.1 nicht bestimmt ist, worauf sich eine prozentuale Höhenangabe für Tabellenzeilen und -zellen bezieht, siehe http://www.w3.org/TR/CSS21/tables.html#height-layout. Die Höhe der Tabellenzelle richtet sich also nach dem Inhalt und dieser soll sich nun nach der Höhe der Tabellenzelle richten - ein Dilemma...
                            Eine Lösung könnte sein, td display:block zu definieren oder ganz einfach auf die Tabelle zu verzichten; mit Block-Elementen gibt es diese Probleme nicht.

                            freundliche Grüße
                            Ingo

                            1. Hej Ingo

                              Eine Lösung könnte sein, td display:block zu definieren

                              Yes! Das war der entscheidende Tipp: jetzt verhält sich Opera wie Netscape -- damit kann ich leben!

                              Morgen muss ich das mal in die "echte" Seite einbauen, hoffentlich klappt es dann auch ...

                              Danke!

                              -- snorri

                          3. Hallo snorri,

                            <html style="height:100%;">

                            html ist eines der 9 Element die kein style-Attribut haben: http://www.w3.org/TR/html401/struct/global.html#edef-HTML.

                            Grüße aus Nürnberg
                            Tobias

    2. Hallo

      nein, table hat immer noch kein attribut namens height, und wird vermutlich auch nie mehr in seinem leben eins bekommen.

      Nun, laut http://de.selfhtml.org/navigation/html.htm#tabellen hat es das aber...

      1. Hi Schlauschnacker,

        nein, table hat immer noch kein attribut namens height, und wird vermutlich auch nie mehr in seinem leben eins bekommen.

        Nun, laut http://de.selfhtml.org/navigation/html.htm#tabellen hat es das aber...

        Nein, dort ist es ausschließlich bei <th> angeführt.

        http://www.w3.org/TR/REC-html40/struct/tables.html#adef-height-TH

        Grüße,
         Roland