Curt: height vom NN 6.0 und CSS mit einer XHTML-Doctype ignoriert

Hallo an alle,

Nach dem ich lange an einer Seite herumgebastelt hatte damit sie sowohl für den IE, NN und Opera annähernd das gleiche Erscheinungsbild aufweist, fragte ich mich "was hat das jetzt genaugenommen noch mit HTML zu tun?". Unzählige Verschachtelte Tabellen, Spacer und so weiter.
Gut, dachte, wie wärs mal was "wirklich konformes" zu versuchen, d.h. z.B. das komplette Layout über CSS.

Gleich zu begin bin dann auf ein merkwürdiges Problem gestossen.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<style type="text/css">
<!--

table {
  height:100%;
  }
//-->
</style>
<head>
<title>CSS Interpretarion</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<table>
<tr><td>hallo</td></tr>
<tr><td>hallo</td></tr>
<tr><td>hallo</td></tr>
</table>
</body>
</html>

Die CSS-Abgabe wird hier völlig ignoriert. Nur wenn man die DOCTYPE-Deklaration weglässt stellt NN 6.0 die Seite richtig dar(?).
Nun würde mich interessieren wieso? Ist eine height-Angabe nach XHTML 1.0 für eine Tabelle über CSS nicht erlaubt?

Ich wollte es genauer wissen und bin auch mal die dtd für HTML3.2,HTML4 und XHTML 1.0 durchgegangen, es gibt für das table-Element kein Attribute height. Hab nochmal in SELFHTML nachgelsen, dort stehts auch [Link:tcec.htm#a1], hab ich bisher aber immer geschickt überlesen. Gut, daher mag der Netscape 6.0 auch das <table height="100%"> nicht mit einer XHTML-DTD. Aber wie stehts mit CSS?

gruss

Curt

  1. hi,

    afaik ist das...

    height:100%;

    ... in xhtml 1.0 nicht vorgesehen, wird ergo auch nicht dargestellt.
    Wenn Du doctype weglaesst, schaltet nc6 in den "quirks-modus" um,
    d. h. er verhaelt sich (fehler)toleranter.

    hth

    Gruesse  Joachim

    1. Moin

      ... in xhtml 1.0 nicht vorgesehen, wird ergo auch nicht dargestellt.

      Sehe ich anders. CSS ist eigenständig und kann in XHTML Dokument regulär eingebunden werden http://www.websitedev.de/xhtml/xhtml1/#guidelines hier: C.13

      Viele Grüße

      Swen

      1. hi,

        Sehe ich anders. CSS ist eigenständig [...]

        hmm, vielleicht missverstehen wir uns. Ich sprach lediglich von Prozentangaben fuer table-height.

        Gruesse  Joachim

        1. Moin,

          hmm, vielleicht missverstehen wir uns.

          Scheint so :-) Ich hatte das anders gelesen. Gleichwohl:

          Ich sprach lediglich von Prozentangaben fuer table-height.

          Ich bin kein CSS-Experte, aber wenn ich http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-height lese, dann sehe ich nicht, warum height beim Element table nicht sein dürfte. table columns umfasst imo nicht alle table-Elemente. Und hier wird die Höhe einer Tabelle sogar ausführlich besprochen http://www.w3.org/TR/REC-CSS2/tables.html#height-layout. Oder habe ich ein Brett vor dem Kopf und sollte lieber erst mal was essen gehen :-)

          Grüße

          Swen

          1. Hi,

            lies doch mal "http://www.teamone.de/selfaktuell/forum/?m=152442&t=29262" (mein Ansatz in diesem Thread). Ganz so verworren ist das alles nicht.

            m.

            1. Moin

              lies doch mal "http://www.teamone.de/selfaktuell/forum/?m=152442&t=29262" (mein Ansatz in diesem Thread).

              Hab ich :-) und mir den Hinweis verkniffen, dass das Element body imo ein Elternelement hat (nämlich html).

              Ganz so verworren ist das alles nicht.

              Die Frage war aber eine andere: Erlaubt CSS 2 die Angabe height (mit Prozentwerten) für das Element table. Die praktische Auswirkung (und da ist dein Hinweis dann in der Tat wesentlich) ist dann eine ganz anderer Problemkreis.

              Viele Grüße

              Swen

              1. Hallo Swen,

                Die Frage war aber eine andere: Erlaubt CSS 2 die Angabe height (mit Prozentwerten) für das Element table. Die praktische Auswirkung (und da ist dein Hinweis dann in der Tat wesentlich) ist dann eine ganz anderer Problemkreis.

                na, dann befragen wir doch mal die CSS2-Spec:
                In http://www.w3.org/TR/REC-CSS2/tables.html#height-layout steht

                17.5.3 Table height algorithms

                The height of a table is given by the 'height' property for the 'table'
                      or 'inline-table' element. A value of 'auto' means that the height is
                      the sum of the row heights plus any cell spacing or borders. Any other
                      value specifies the height explicitly;

                Viele Gruesse
                 Kess

                1. Moin,

                  Die Frage war aber eine andere: Erlaubt CSS 2 die Angabe height (mit Prozentwerten) für das Element table.

                  na, dann befragen wir doch mal die CSS2-Spec:

                  Mein reden :-) Dann sind wir ja schon zwei. Das sollte jetzt jeden überzeugen http://www.teamone.de/selfaktuell/forum/?m=152448&t=29262 Wehe uns, wenn jetzt Thomas mit einem "ja, aber" kommt :-)

                  Viele Grüße

                  Swen

                  1. Hi Swen,

                    Mein reden :-) Dann sind wir ja schon zwei. Das sollte jetzt jeden überzeugen http://www.teamone.de/selfaktuell/forum/?m=152448&t=29262

                    ups... oehm, jo, man sollte erst das ganze Posting lesen, bevor man antwortet. lol. Da geb ich dir doch glatt deinen eigenen Link zurueck. peinlich peinlich.

                    Viele Gruesse
                     Kess

          2. hi again,

            Ich bin kein CSS-Experte

            macht nix, ich auch nicht ;-)

            aber wenn ich [...] lese, dann sehe ich nicht, warum height beim Element table nicht sein dürfte.

            height schon, aber irgendwas war mit den Prozentangaben *verdammtwohabichdasnochgelesen*,
            eventuell, dass nicht definiert ist, worauf sich die Prozente beziehen...

            In der Praxis stelle ich fest, dass z. B. die beliebte vertikale Zentrierung per
            table height="98%" dann nicht mehr im nc6 klappt, wenn doctype gesetzt ist
            (ab html 4.0), also der "quirks-modus" verlassen wird.

            Hmm, vieleicht doch mal dciwam zu Rate ziehen...

            Gruesse  Joachim

  2. Hi,

    wenn du im CSS-Part "body {height: 600px;}" hinzufügst, dann wird die Tabelle auf dieselbe Höhe gestreckt.

    Das liegt daran, das der BODY im Navigator 6 (und IE 6) wie ein einfaches DIV behandelt wird und immer nur so hoch ist wie per CSS definiert (oder wie der Inhalt darinnen).

    Dummerweise streckt "body {height: 100%;}" den BODY nicht auf die maximale Höhe im Browserfensters. Das liegt wohl daran, dass die Prozent-Angabe sich immer auf das Elternelement bezieht.

    TABLE hat als Elternelement BODY, also geht "height: 100%"
    BODY hat kein Elternelement, also geht "height: 100%" NICHT

    Eine Lösung weiß ich aber auch noch nicht. Bin aber schon auf dasselbe Problem gestoßen.

    m.

    1. hi,

      das erklaert einiges...

      Eine Lösung weiß ich aber auch noch nicht. Bin aber schon auf dasselbe Problem gestoßen.

      hm, hoechstens die hoehe fuer nc6 dynamisch per js reinschreiben, denn
      "self.innerHeight" steht auch bei leerem body zur Verfuegung.

      Gruesse  Joachim

      1. Hallo,

        "self.innerHeight" steht auch bei leerem body zur Verfuegung.

        ja, logisch: self bezieht sich ja auf das Window-Objekt, nicht auf den BODY.

        m.

    2. Hi,

      wenn du im CSS-Part "body {height: 600px;}" hinzufügst, dann wird die Tabelle auf dieselbe Höhe gestreckt.

      Das liegt daran, das der BODY im Navigator 6 (und IE 6) wie ein einfaches DIV behandelt wird und immer nur so hoch ist wie per CSS definiert (oder wie der Inhalt darinnen).

      Würde mich nur interessieren ob sich das nach den spezifikation richtet. (wenn es beide machen, IE und NN wirds wohl so sein!)

      Dummerweise streckt "body {height: 100%;}" den BODY nicht auf die maximale Höhe im Browserfensters. Das liegt wohl daran, dass die Prozent-Angabe sich immer auf das Elternelement bezieht.

      Mhhh, das leuchtet mir ein, kommt mir auch irgendwie bekannt vor... (weiss nur gerade nicht woher)

      TABLE hat als Elternelement BODY, also geht "height: 100%"
      BODY hat kein Elternelement, also geht "height: 100%" NICHT

      Eine Lösung weiß ich aber auch noch nicht. Bin aber schon auf dasselbe Problem gestoßen.

      Wie ich anfangs schon erwähnt hatte ging es mir darum eine html-seite zu bauen nach den standards und nach den "ideen" hinter den standards, deswegen hatte ich auch schon ursprünglich eine JavaScript-Funktion drine die die höhe ermittelt und das table-tag entsprechend generiert, davon wollte ich ja gerade los.

      gruss

      Curt